* @copyright 2012-2014 Romanenko Sergey / Awilum * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ class Navigation { /** * Items * * @var array */ public static $items = array(); /** * Navigation types */ const LEFT = 1; const TOP = 2; /** * Add new item * * * // Add link for left navigation * Navigation::add(__('Blog'), 'content', 'blog', 11); * * // Add link for top navigation * Navigation::add(__('View site'), 'top', 'http://site.com/', 11, Navigation::TOP, true); * * * @param string $name Name * @param string $category Category * @param stirng $link Link * @param integer $priority Priority. Default is 10 * @param integer $type Type. Default is LEFT * @param bool $external External or not. Default is false */ public static function add($name, $category, $id, $priority = 10, $type = Navigation::LEFT, $external = false) { Navigation::$items[] = array( 'name' => (string) $name, 'category' => (string) $category, 'id' => (string) $id, 'priority' => (int) $priority, 'type' => (int) $type, 'external' => (bool) $external, ); } /** * Draw items * * * Navigation::draw('content'); * Navigation::draw('top', Navigation::TOP); * * * @param string $category Category * @param integer $type Type. Default is LEFT */ public static function draw($category, $type = Navigation::LEFT) { // Sort items by priority $items = Arr::subvalSort(Navigation::$items, 'priority'); // Draw left navigation if ($type == Navigation::LEFT) { // Loop trough the items foreach ($items as $item) { // If current plugin id == selected item id then set class to current if (Request::get('id') == $item['id'] && $item['external'] == false) $class = 'class = "current" '; else $class = ''; // If current category == item category and navigation type is left them draw this item if ($item['category'] == $category && $item['type'] == Navigation::LEFT) { // Is external item id or not ? if ($item['external'] == false) { echo '
  • '.$item['name'].'
  • '; } else { echo '
  • '.$item['name'].'
  • '; } } } } elseif ($type == Navigation::TOP) { // Draw top navigation foreach ($items as $item) { if ($item['category'] == $category && $item['type'] == Navigation::TOP) { if ($item['external'] == false) { echo ''.$item['name'].''.Html::nbsp(2); } else { echo ''.$item['name'].''.Html::nbsp(2); } } } } } /** * Draw items * * * Navigation::draw('content'); * Navigation::draw('top', Navigation::TOP); * * * @param string $category Category * @param integer $type Type. Default is LEFT */ public static function get($category, $type = Navigation::LEFT) { // Sort items by priority $items = Arr::subvalSort(Navigation::$items, 'priority'); // Draw left navigation if ($type == Navigation::LEFT) { // Loop trough the items foreach ($items as $item) { // If current plugin id == selected item id then set class to current if (Request::get('id') == $item['id'] && $item['external'] == false) $class = 'class = "current" '; else $class = ''; // If current category == item category and navigation type is left them draw this item if ($item['category'] == $category && $item['type'] == Navigation::LEFT) { // Is external item id or not ? if ($item['external'] == false) { echo '
  • '.$item['name'].'
  • '; } else { echo '
  • '.$item['name'].'
  • '; } } } } elseif ($type == Navigation::TOP) { // Draw top navigation foreach ($items as $item) { if ($item['category'] == $category && $item['type'] == Navigation::TOP) { if ($item['external'] == false) { echo ''.$item['name'].''.Html::nbsp(2); } else { echo ''.$item['name'].''.Html::nbsp(2); } } } } } /** * Draw dropdown items * * * Navigation::getDropdown('content'); * * * @param string $category Category */ public static function getDropdown($category) { // Sort items by priority $items = Arr::subvalSort(Navigation::$items, 'priority'); // Loop trough the items foreach ($items as $item) { // If current plugin id == selected item id then set class to current if (Request::get('id') == $item['id'] && $item['external'] == false) $class = 'selected = "selected" '; else $class = ''; // If current category == item category and navigation type is left them draw this item if ($item['category'] == $category && $item['type'] == Navigation::LEFT) { // Is external item id or not ? if ($item['external'] == false) { echo ''; } } } } }