Exemple #1
0
 /**
  * Constructor.
  *
  * @param 	object 	An optional KConfig object with configuration options
  */
 public function __construct(KConfig $config)
 {
     $this->_root = $config->root;
     $this->_property = $config->property;
     $config->object = $config->service_container->get($config->repository->getEntityset(), $config->toArray());
     parent::__construct($config);
 }
Exemple #2
0
 public function display()
 {
     $apps = $this->getService('com://site/actors.domain.entityset.component', array('actor' => $this->_state->getItem(), 'can_enable' => true));
     $config = new KConfig();
     foreach ($this->_state->getItem()->components as $component) {
         $permissions = array();
         if (!$component->isAssignable()) {
             continue;
         }
         if (!count($component->getPermissions())) {
             continue;
         }
         foreach ($component->getPermissions() as $identifier => $actions) {
             if (strpos($identifier, '.') === false) {
                 $name = $identifier;
                 $identifier = clone $component->getIdentifier();
                 $identifier->path = array('domain', 'entity');
                 $identifier->name = $name;
             }
             $identifier = $this->getIdentifier($identifier);
             foreach ($actions as $action) {
                 $key = $identifier->package . ':' . $identifier->name . ':' . $action;
                 $value = $this->_state->getItem()->getPermission($key);
                 $permissions[] = array('name' => $key, 'value' => $value);
             }
             $config->append(array($component->component => array('name' => $component->component, 'enabled' => true, 'permissions' => $permissions)));
         }
     }
     foreach ($apps as $app) {
         $config->append(array($app->component => array('name' => $app->component, 'enabled' => $app->enabledForActor($this->_state->getItem()))));
     }
     $data['followRequests'] = $this->_state->getItem()->requesters->toArray();
     $data['apps'] = array_values($config->toArray());
     return json_encode($data);
 }
Exemple #3
0
 public function message($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('message' => 'com://admin/logman.activity.message.default', 'formatted' => true, 'escape_html' => false));
     $message = $this->getService($config->message, array_merge($config->toArray(), array('activity' => $config->row)));
     return (string) $message;
 }
Exemple #4
0
 /**
  * Creates a story.
  *
  * @param array|KCommandContext $config Config. Can be a story data or KCommandContext if the method
  *                                      is used as a callback
  *
  * @return ComStoriesDomainEntityStory
  */
 public function createStory($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('subject' => get_viewer(), 'owner' => get_viewer(), 'component' => 'com_' . $this->_mixer->getIdentifier()->package));
     $story = $this->getService('repos://site/stories')->create($config->toArray());
     //$story = $this->getService('com://site/stories.controller.story')->add($config->toArray());
     $story->save();
     return $story;
 }
Exemple #5
0
   	/**
	 * Render a modal box
	 *
	 * @return string	The html output
	 */
	public function modal($config = array())
	{
		$config = new KConfig($config);
		$config->append(array(
			'selector' => 'a.modal',
			'options'  => array('disableFx' => true)
 		));

		return JHTML::_('behavior.modal', $config->selector, $config->toArray());
	}
Exemple #6
0
 /** 
  * Constructor.
  *
  * @param array $config An optional KConfig object with configuration options.
  */
 public function __construct($config = array())
 {
     $config = new KConfig($config);
     $this->_message = $config->message;
     $this->_code = $config->code;
     $this->_key = $config->key;
     unset($config['message']);
     unset($config['code']);
     unset($config['key']);
     $this->_data = $config->toArray();
 }
Exemple #7
0
	/**
	 * Create an instance of a class based on a class identifier
	 *
	 * @param 	mixed  		 Identifier or Identifier object - joomla.[.path].name
	 * @param 	object 		 An optional KConfig object with configuration options
	 * @return object|false  Return object on success, returns FALSE on failure
	 */
	public function instantiate($identifier, KConfig $config)
	{
        $name = ucfirst($identifier->package);
			
		//Check to see of the type is an alias
		if(array_key_exists($name, $this->_alias_map)) {
			$name = $this->_alias_map[$name];
		}

		$instance = call_user_func_array(array('JFactory', 'get'.$name), $config->toArray());
		return $instance;
	}
 /**
  * Render item pagination
  *
  * @param   array   An optional array with configuration options
  * @return  string  Html
  * @see     http://developer.yahoo.com/ypatterns/navigation/pagination/
  */
 public function pagination($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('limit' => 0));
     $html = '<div class="container" id="files-paginator-container">';
     $html .= '<div class="pagination" id="files-paginator">';
     $html .= '<div class="limit">' . $this->limit($config->toArray()) . '</div>';
     $html .= $this->_pages();
     $html .= '<div class="limit"> ' . JText::_('Page') . ' <span class="page-current">1</span>';
     $html .= ' ' . JText::_('of') . ' <span class="page-total">1</span></div>';
     $html .= '</div>';
     $html .= '</div>';
     return $html;
 }
 /**
  * Render item pagination
  * 
  * @param   array   An optional array with configuration options
  * @return  string  Html
  * @see     http://developer.yahoo.com/ypatterns/navigation/pagination/
  */
 public function pagination($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('total' => 0, 'display' => 4, 'offset' => 0, 'limit' => 0, 'attribs' => array('attribs' => array('onchange' => 'this.form.submit();'))));
     // Paginator object
     $paginator = KFactory::tmp('lib.koowa.model.paginator')->setData(array('total' => $config->total, 'offset' => $config->offset, 'limit' => $config->limit, 'display' => $config->display));
     // Get the paginator data
     $list = $paginator->getList();
     $html = '<del class="container">';
     $html = '<div class="pagination">';
     $html .= '<div class="limit">' . JText::_('Display NUM') . ' ' . $this->limit($config->toArray()) . '</div>';
     $html .= $this->_pages($list);
     $html .= '<div class="limit"> ' . JText::_('Page') . ' ' . $paginator->current . ' ' . JText::_('of') . ' ' . $paginator->count . '</div>';
     $html .= '</div>';
     $html .= '</del>';
     return $html;
 }
Exemple #10
0
 /**
  * Initializes the default configuration for the object
  *
  * Called from {@link __construct()} as a first step of object instantiation.
  *
  * @param KConfig $config An optional KConfig object with configuration options.
  *
  * @return void
  */
 protected function _initialize(KConfig $config)
 {
     $config->append(array('parser' => 'com://site/notifications.template.helper.parser', 'behaviors' => array('com://site/mailer.controller.behavior.mailer' => $config->toArray())));
     parent::_initialize($config);
 }
Exemple #11
0
    public function thumbnail($config = array())
    {
        $config = new KConfig($config);
        $config->append(array('images_root' => KRequest::root() . '/joomlatools-files/docman-images/', 'enable_automatic_thumbnail' => true, 'automatic_thumbnail' => false, 'automatic_thumbnail_text' => $this->translate('Automatically generate')));
        //Don't cache automatic thumbnails
        if (!$config->automatic_thumbnail) {
            $config->automatic_thumbnail_image = false;
        }
        $value = $config->value;
        if (!$value) {
            $value = 'default.png';
        }
        if (substr($value, 0, 6) === 'image:') {
            $value = substr($value, 6);
        }
        if ($config->enable_automatic_thumbnail) {
            $html = '<div class="image-picker thumbnail-picker" style="margin-top: 5px">
                        <img
                                id="image-preview"
                                data-src="' . $value . '"
                                src="' . $config->images_root . $value . '"
                                onerror="this.src=\'media://com_docman/images/nothumbnail.png\';"
                                style="max-height:128px;max-width:128px;background:#EEE;margin:0"
                                    />
                        <div id="choose-thumbnail" class="dropdown btn-group" style="float:left;margin-left:5px">
                            <button class="btn choose-photo-button dropdown-toggle" id="profile_header_upload" type="button" data-toggle="dropdown"
                                    style="float:none">
                                    ' . $this->translate('Change thumbnail') . '
                                <span class="caret"></span>
                            </button>
                            <ul class="dropdown-menu">
                                <li id="automatic_thumbnail" class="dropdown-link">
                                    <a href="#" class="dropdown-link" id="automatic_thumbnail">
                                        <input style="display:none" type="checkbox" name="automatic_thumbnail" value="1"
                                        ' . ($config->automatic_thumbnail ? 'checked="checked"' : '') . '
                                            />
                                        ' . $this->translate('Automatically generate') . '
                                    </a>
                                </li>
                                <li id="thumbnail-choose-existing" class="dropdown-link">
                                    <div id="image-selector" class="image-selector">
                                        ' . $this->getTemplate()->renderHelper('modal.image', $config->toArray()) . '
                                    </div>
                                </li>
                                <li class="divider"></li>
                                <li id="thumbnail-delete-image" class="pretty-link dropdown-link ">
                                    <a href="#" class="dropdown-link btn" id="image-selector-clear">' . $this->translate('Clear') . '</a>
                                </li>
                            </ul>
                            <p class="help-inline automatic-enabled">' . $this->translate('Thumbnail is automatically generated.') . '</p>
                            <p class="help-inline automatic-unsupported-format">' . $this->translate('Automatically generated thumbnails are only supported on image files.') . '</p>
                            <p class="help-inline automatic-unsupported-location">' . $this->translate('Automatically generated thumbnails are only supported on local files') . '</p>
                        </div>

                    </div>';
        } else {
            $html = '<div class="image-picker thumbnail-picker" style="margin-top: 5px">
                        <img
                                id="image-preview"
                                data-src="' . $value . '"
                                src="' . $config->images_root . $value . '"
                                onerror="this.src=\'media://com_docman/images/nothumbnail.png\';"
                                style="max-height:128px;max-width:128px;background:#EEE;margin:0"
                                    />
                        <div id="choose-thumbnail" class="dropdown btn-group" style="float:left;margin-left:5px">
                            <button class="btn choose-photo-button dropdown-toggle" id="profile_header_upload" type="button" data-toggle="dropdown"
                                    style="float:none">
                                    ' . $this->translate('Change thumbnail') . '
                                <span class="caret"></span>
                            </button>
                            <ul class="dropdown-menu">
                                <li id="thumbnail-choose-existing" class="dropdown-link">
                                    <div id="image-selector" class="image-selector">
                                        ' . $this->getTemplate()->renderHelper('modal.image', $config->toArray()) . '
                                    </div>
                                </li>
                                <li class="divider"></li>
                                <li id="thumbnail-delete-image" class="pretty-link dropdown-link ">
                                    <a href="#" class="dropdown-link btn" id="image-selector-clear">' . $this->translate('Clear') . '</a>
                                </li>
                            </ul>
                        </div>

                    </div>';
        }
        return $html;
    }
Exemple #12
0
 /**
  * Create a module object
  *
  * @param $config
  * @return stdClass
  */
 public function create($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('id' => 0, 'title' => false, 'module' => 'mod_custom', 'position' => 'left', 'content' => false, 'showtitle' => 1, 'control' => '', 'params' => '', 'user' => 0, 'name' => 'custom', 'style' => ''));
     return (object) $config->toArray();
 }
 public function tfoot($config = array())
 {
     $config = new KConfig($config);
     $config->append(array('total' => 0, 'colspan' => 10));
     if (!$config->total) {
         return '<tbody>' . '<tr class="' . KFactory::get('admin::com.ninja.helper.grid')->zebra() . '">' . '<td colspan="' . $config->colspan . '" align="center">' . '<h2 class="ninja-empty-list">' . sprintf(JText::_('No %s found'), JText::_($this->name)) . '</h2>' . '</td>' . '</tr>' . '</tbody>';
     }
     $html[] = '<tfoot><tr><td class="pagination-footer" colspan="' . $config->colspan . '">';
     $html[] = self::pagination($config->toArray());
     $html[] = '</td></tr></tfoot>';
     return implode(PHP_EOL, $html);
 }
Exemple #14
0
 /**
  * @param $siteRouter
  * @param $uri
  * @return mixed
  */
 public function build(&$siteRouter, &$uri)
 {
     $query = $uri->getQuery(true);
     $query2 = array();
     if (isset($query['option'])) {
         $query2['option'] = $query['option'];
     }
     if (isset($query['view'])) {
         $query2['view'] = $query['view'];
     }
     if (isset($query['id'])) {
         $query2['id'] = $query['id'];
     }
     /**
      * Check if the uri is a menu item.
      */
     $items = JSite::getMenu()->getItems('link', 'index.php?' . urldecode(http_build_query($query2)), true);
     if (is_object($items) && $items->id) {
         $merged = array_diff_key($query, $items->query);
         unset($merged['Itemid']);
         if (is_object($this->_routes->get($query['view']))) {
             preg_match_all('/\\{(.*?)\\}/ ', $this->_routes->get($query['view'])->getPattern(), $matches);
             $merged = array_diff_key($merged, array_flip($matches[1]));
         }
         $merged['format'] = isset($query['format']) ? $query['format'] : 'html';
         $langTag = isset($query['_locale']) ? $query['_locale'] : substr($items->language, 0, 2);
         $uri->setQuery($merged);
         $uri->setPath($langTag . '/' . $items->route);
         return $uri;
     }
     $generator = $this->_router->getGenerator();
     if (isset($query['view']) && array_key_exists($query['view'], $this->_routes->all())) {
         if (isset($query['_locale']) && $query['_locale'] != $this->_lang) {
             try {
                 $originalApplicationLanguage = JFactory::getLanguage()->getTag();
                 $row = KService::get('com://site/' . str_replace('com_', null, $query['option']) . '.model.' . KInflector::pluralize($query['view']))->slug($query['slug'])->getItem();
                 //TODO: Get default languages and select the default one.
                 switch ($query['_locale']) {
                     case 'en':
                         $iso_code = 'en-GB';
                         break;
                     case 'fr':
                         $iso_code = 'fr-FR';
                         break;
                     case 'nl':
                         $iso_code = 'nl-NL';
                         break;
                     default:
                         $iso_code = 'en-GB';
                 }
                 JFactory::getLanguage()->setLanguage($iso_code);
                 $row = KService::get('com://site/' . str_replace('com_', null, $query['option']) . '.model.' . KInflector::pluralize($query['view']))->id($row->id)->getItem();
                 if ($row->id) {
                     $query['slug'] = $row->slug;
                 }
                 JFactory::getLanguage()->setLanguage($originalApplicationLanguage);
             } catch (Exception $e) {
             }
         }
         $format = isset($query['format']) ? $query['format'] : 'html';
         $requirements = $this->_routes->get($query['view'])->getRequirements();
         $config = new KConfig(array_merge($requirements, $query));
         $config->append(array('_locale' => $this->_lang, 'format' => $format));
         try {
             if ($query['option'] != 'com_search') {
                 $component_router = $siteRouter->getComponentRouter($query['option']);
                 $vars = $component_router->build($query);
             }
             if ($vars) {
                 foreach ($vars as $key => $var) {
                     $config->{$key} = $var;
                 }
             }
             $url = $generator->generate($query['view'], $config->toArray());
             // Remove format since the joomla router handles this.
             $url = str_replace('.' . $format, null, $url);
             $url = parse_url($url);
             $path = $url['path'];
             parse_str(isset($url['query']) ? $url['query'] : '', $query);
             if (isset($query['Itemid'])) {
                 $uri->setVar('Itemid', $query['Itemid']);
             }
             unset($query['Itemid']);
             unset($query['id']);
             $uri->setQuery(array_merge(array('format' => $format), $query));
             $uri->setPath($path);
         } catch (Exception $e) {
         }
     }
     $query = array_filter(array_merge($uri->getQuery(true), $query));
     unset($query['_route']);
     unset($query['_locale']);
     $uri->setQuery($query);
     return $uri;
 }