/** * 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); }
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); }
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; }
/** * 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; }
/** * 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()); }
/** * 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(); }
/** * 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; }
/** * 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); }
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; }
/** * 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); }
/** * @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; }