Guest User

apps/backend/components/web/widgets/LeftSideNavigationWidget

a guest
Mar 24th, 2016
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 16.01 KB | None | 0 0
  1. <?php defined('MW_PATH') || exit('No direct script access allowed');
  2.  
  3. /**
  4.  * LeftSideNavigationWidget
  5.  *
  6.  * @package MailWizz EMA
  7.  * @author Serban George Cristian <[email protected]>
  8.  * @link http://www.mailwizz.com/
  9.  * @copyright 2013-2016 MailWizz EMA (http://www.mailwizz.com)
  10.  * @license http://www.mailwizz.com/license/
  11.  * @since 1.0
  12.  */
  13.  
  14. class LeftSideNavigationWidget extends CWidget
  15. {
  16.     public function run()
  17.     {
  18.         $sections   = array();
  19.         $hooks      = Yii::app()->hooks;
  20.         $controller = $this->controller;
  21.         $route      = $controller->route;
  22.         $priority   = 0;
  23.         $request    = Yii::app()->request;
  24.         $user       = Yii::app()->user->getModel();
  25.  
  26.         Yii::import('zii.widgets.CMenu');
  27.  
  28.         $menuItems = array(
  29.             'dashboard' => array(
  30.                 'name'      => Yii::t('app', 'Dashboard'),
  31.                 'icon'      => 'glyphicon-dashboard',
  32.                 'active'    => 'dashboard',
  33.                 'route'     => array('dashboard/index'),
  34.             ),
  35.             'articles' => array(
  36.                 'name'      => Yii::t('app', 'Articles'),
  37.                 'icon'      => 'glyphicon-book',
  38.                 'active'    => 'article',
  39.                 'route'     => null,
  40.                 'items'     => array(
  41.                     array('url' => array('articles/index'), 'label' => Yii::t('app', 'View all articles'), 'active' => strpos($route, 'articles/index') === 0),
  42.                     array('url' => array('article_categories/index'), 'label' => Yii::t('app', 'View all categories'), 'active' => strpos($route, 'article_categories') === 0),
  43.                 ),
  44.             ),
  45.             'users' => array(
  46.                 'name'      => Yii::t('app', 'Users'),
  47.                 'icon'      => 'glyphicon-user',
  48.                 'active'    => array('users', 'user_groups'),
  49.                 'route'     => null,
  50.                 'items'     => array(
  51.                     array('url' => array('users/index'), 'label' => Yii::t('app', 'Users'), 'active' => strpos($route, 'users') === 0),
  52.                     array('url' => array('user_groups/index'), 'label' => Yii::t('app', 'Groups'), 'active' => strpos($route, 'user_groups') === 0),
  53.                 ),
  54.             ),
  55.             'monetization' => array(
  56.                 'name'      => Yii::t('app', 'Monetization'),
  57.                 'icon'      => 'glyphicon-credit-card',
  58.                 'active'    => array('payment_gateway', 'price_plans', 'orders', 'promo_codes', 'currencies', 'taxes'),
  59.                 'route'     => null,
  60.                 'items'     => array(
  61.                     array('url' => array('payment_gateways/index'), 'label' => Yii::t('app', 'Payment gateways'), 'active' => strpos($route, 'payment_gateway') === 0),
  62.                     array('url' => array('price_plans/index'), 'label' => Yii::t('app', 'Price plans'), 'active' => strpos($route, 'price_plans') === 0),
  63.                     array('url' => array('orders/index'), 'label' => Yii::t('app', 'Orders'), 'active' => strpos($route, 'orders') === 0),
  64.                     array('url' => array('promo_codes/index'), 'label' => Yii::t('app', 'Promo codes'), 'active' => strpos($route, 'promo_codes') === 0),
  65.                     array('url' => array('currencies/index'), 'label' => Yii::t('app', 'Currencies'), 'active' => strpos($route, 'currencies') === 0),
  66.                     array('url' => array('taxes/index'), 'label' => Yii::t('app', 'Taxes'), 'active' => strpos($route, 'taxes') === 0),
  67.                 ),
  68.             ),
  69.             'customers' => array(
  70.                 'name'      => Yii::t('app', 'Customers'),
  71.                 'icon'      => 'glyphicon-user',
  72.                 'active'    => array('customer', 'campaign'),
  73.                 'route'     => null,
  74.                 'items'     => array(
  75.                     array('url' => array('customers/index'), 'label' => Yii::t('app', 'Customers'), 'active' => strpos($route, 'customers') === 0 && strpos($route, 'customers_mass_emails') === false),
  76.                     array('url' => array('customer_groups/index'), 'label' => Yii::t('app', 'Groups'), 'active' => strpos($route, 'customer_groups') === 0),
  77.                     array('url' => array('campaigns/index'), 'label' => Yii::t('app', 'Campaigns'), 'active' => strpos($route, 'campaigns') === 0),
  78.                     array('url' => array('customers_mass_emails/index'), 'label' => Yii::t('app', 'Mass emails'), 'active' => strpos($route, 'customers_mass_emails') === 0),
  79.                     array('url' => array('customer_messages/index'), 'label' => Yii::t('app', 'Messages'), 'active' => strpos($route, 'customer_messages') === 0),
  80.                 ),
  81.             ),
  82.             'servers'       => array(
  83.                 'name'      => Yii::t('app', 'Servers'),
  84.                 'icon'      => 'glyphicon-transfer',
  85.                 'active'    => array('delivery_servers', 'bounce_servers', 'feedback_loop_servers'),
  86.                 'route'     => null,
  87.                 'items'     => array(
  88.                     array('url' => array('delivery_servers/index'), 'label' => Yii::t('app', 'Delivery servers'), 'active' => strpos($route, 'delivery_servers') === 0),
  89.                     array('url' => array('bounce_servers/index'), 'label' => Yii::t('app', 'Bounce servers'), 'active' => strpos($route, 'bounce_servers') === 0),
  90.                     array('url' => array('feedback_loop_servers/index'), 'label' => Yii::t('app', 'Feedback loop servers'), 'active' => strpos($route, 'feedback_loop_servers') === 0),
  91.                 ),
  92.             ),
  93.             'domains' => array(
  94.                 'name'      => Yii::t('app', 'Domains'),
  95.                 'icon'      => 'glyphicon-globe',
  96.                 'active'    => array('sending_domains', 'tracking_domains'),
  97.                 'route'     => null,
  98.                 'items'     => array(
  99.                     array('url' => array('sending_domains/index'), 'label' => Yii::t('app', 'Sending domains'), 'active' => strpos($route, 'sending_domains') === 0),
  100.                     array('url' => array('tracking_domains/index'), 'label' => Yii::t('app', 'Tracking domains'), 'active' => strpos($route, 'tracking_domains') === 0),
  101.                 ),
  102.             ),
  103.             'list-page-type' => array(
  104.                 'name'      => Yii::t('app', 'List page types'),
  105.                 'icon'      => 'glyphicon-list-alt',
  106.                 'active'    => 'list_page_type',
  107.                 'route'     => array('list_page_type/index'),
  108.             ),
  109.             'email-templates-gallery' => array(
  110.                 'name'      => Yii::t('app', 'Email templates gallery'),
  111.                 'icon'      => 'glyphicon-text-width',
  112.                 'active'    => 'email_templates_gallery',
  113.                 'route'     => array('email_templates_gallery/index'),
  114.             ),
  115.             'blacklist' => array(
  116.                 'name'      => Yii::t('app', 'Email blacklist'),
  117.                 'icon'      => 'glyphicon-ban-circle',
  118.                 'active'    => 'email_blacklist',
  119.                 'route'     => array('email_blacklist/index'),
  120.             ),
  121.             'extend' => array(
  122.                 'name'      => Yii::t('app', 'Extend'),
  123.                 'icon'      => 'glyphicon-plus-sign',
  124.                 'active'    => array('extensions', 'theme', 'languages', 'ext'),
  125.                 'route'     => null,
  126.                 'items'     => array(
  127.                     array('url' => array('extensions/index'), 'label' => Yii::t('app', 'Extensions'), 'active' => strpos($route, 'ext') === 0),
  128.                     array('url' => array('theme/index'), 'label' => Yii::t('app', 'Themes'), 'active' => strpos($route, 'theme') === 0),
  129.                     array('url' => array('languages/index'), 'label' => Yii::t('app', 'Languages'), 'active' => strpos($route, 'languages') === 0),
  130.                 ),
  131.             ),
  132.  
  133.             'locations' => array(
  134.                 'name'      => Yii::t('app', 'Locations'),
  135.                 'icon'      => 'glyphicon-globe',
  136.                 'active'    => array('ip_location_services', 'countries', 'zones'),
  137.                 'route'     => null,
  138.                 'items'     => array(
  139.                     array('url' => array('ip_location_services/index'), 'label' => Yii::t('app', 'Ip location services'), 'active' => strpos($route, 'ip_location_services') === 0),
  140.                     array('url' => array('countries/index'), 'label' => Yii::t('app', 'Countries'), 'active' => strpos($route, 'countries') === 0),
  141.                     array('url' => array('zones/index'), 'label' => Yii::t('app', 'Zones'), 'active' => strpos($route, 'zones') === 0),
  142.                 ),
  143.             ),
  144.             'settings' => array(
  145.                 'name'      => Yii::t('app', 'Settings'),
  146.                 'icon'      => 'glyphicon-cog',
  147.                 'active'    => 'settings',
  148.                 'route'     => null,
  149.                 'items'     => array(
  150.                     array('url' => array('settings/index'), 'label' => Yii::t('app', 'Common'), 'active' => strpos($route, 'settings/index') === 0),
  151.                     array('url' => array('settings/system_urls'), 'label' => Yii::t('app', 'System urls'), 'active' => strpos($route, 'settings/system_urls') === 0),
  152.                     array('url' => array('settings/import_export'), 'label' => Yii::t('app', 'Import/Export'), 'active' => strpos($route, 'settings/import_export') === 0),
  153.                     array('url' => array('settings/email_templates'), 'label' => Yii::t('app', 'Email templates'), 'active' => strpos($route, 'settings/email_templates') === 0),
  154.                     array('url' => array('settings/cron'), 'label' => Yii::t('app', 'Cron'), 'active' => strpos($route, 'settings/cron') === 0),
  155.                     array('url' => array('settings/email_blacklist'), 'label' => Yii::t('app', 'Email blacklist'), 'active' => strpos($route, 'settings/email_blacklist') === 0),
  156.                     array('url' => array('settings/campaign_attachments'), 'label' => Yii::t('app', 'Campaigns'), 'active' => strpos($route, 'settings/campaign_') === 0),
  157.                     array('url' => array('settings/customer_common'), 'label' => Yii::t('app', 'Customers'), 'active' => strpos($route, 'settings/customer_') === 0),
  158.                     array('url' => array('settings/api_ip_access'), 'label' => Yii::t('app', 'Api'), 'active' => strpos($route, 'settings/api_ip_access') === 0),
  159.                     array('url' => array('settings/monetization'), 'label' => Yii::t('app', 'Monetization'), 'active' => strpos($route, 'settings/monetization') === 0),
  160.                     array('url' => array('settings/customization'), 'label' => Yii::t('app', 'Customization'), 'active' => strpos($route, 'settings/customization') === 0),
  161.                     array('url' => array('settings/cdn'), 'label' => Yii::t('app', 'CDN'), 'active' => strpos($route, 'settings/cdn') === 0),
  162.                     array('url' => array('settings/redis_queue'), 'label' => Yii::t('app', 'Queue'), 'active' => strpos($route, 'settings/redis_queue') === 0),
  163.                 ),
  164.             ),
  165.             'misc' => array(
  166.                 'name'      => Yii::t('app', 'Miscellaneous'),
  167.                 'icon'      => 'glyphicon-bookmark',
  168.                 'active'    => array('misc', 'transactional_emails', 'company_types', 'campaign_abuse_reports'),
  169.                 'route'     => null,
  170.                 'items'     => array(
  171.                     array('url' => array('misc/campaigns_delivery_logs'), 'label' => Yii::t('app', 'Campaigns delivery logs'), 'active' => strpos($route, 'misc/campaigns_delivery_logs') === 0),
  172.                     array('url' => array('misc/campaigns_bounce_logs'), 'label' => Yii::t('app', 'Campaigns bounce logs'), 'active' => strpos($route, 'misc/campaigns_bounce_logs') === 0),
  173.                     array('url' => array('campaign_abuse_reports/index'), 'label' => Yii::t('app', 'Campaign abuse reports'), 'active' => strpos($route, 'campaign_abuse_reports/index') === 0),
  174.                     array('url' => array('transactional_emails/index'), 'label' => Yii::t('app', 'Transactional emails'), 'active' => strpos($route, 'transactional_emails') === 0),
  175.                     array('url' => array('misc/delivery_servers_usage_logs'), 'label' => Yii::t('app', 'Delivery servers usage logs'), 'active' => strpos($route, 'misc/delivery_servers_usage_logs') === 0),
  176.                     array('url' => array('company_types/index'), 'label' => Yii::t('app', 'Company types'), 'active' => strpos($route, 'company_types') === 0),
  177.                     array('url' => array('misc/application_log'), 'label' => Yii::t('app', 'Application log'), 'active' => strpos($route, 'misc/application_log') === 0),
  178.                     array('url' => array('misc/emergency_actions'), 'label' => Yii::t('app', 'Emergency actions'), 'active' => strpos($route, 'misc/emergency_actions') === 0),
  179.                     array('url' => array('misc/guest_fail_attempts'), 'label' => Yii::t('app', 'Guest fail attempts'), 'active' => strpos($route, 'misc/guest_fail_attempts') === 0),
  180.                     array('url' => array('misc/cron_jobs_list'), 'label' => Yii::t('app', 'Cron jobs list'), 'active' => strpos($route, 'misc/cron_jobs_list') === 0),
  181.                     array('url' => array('misc/phpinfo'), 'label' => Yii::t('app', 'PHP info'), 'active' => strpos($route, 'misc/phpinfo') === 0),
  182.                 ),
  183.             ),
  184.         );
  185.  
  186.         if ($supportForumUrl == '') {
  187.             unset($menuItems['support_forum']);
  188.         }
  189.  
  190.         $menuItems = (array)Yii::app()->hooks->applyFilters('backend_left_navigation_menu_items', $menuItems);
  191.  
  192.         // since 1.3.5
  193.         foreach ($menuItems as $key => $data) {
  194.             if (!empty($data['route']) && !$user->hasRouteAccess($data['route'])) {
  195.                 unset($menuItems[$key]);
  196.                 continue;
  197.             }
  198.             if (isset($data['items']) && is_array($data['items'])) {
  199.                 foreach ($data['items'] as $index => $item) {
  200.                     if (isset($item['url']) && !$user->hasRouteAccess($item['url'])) {
  201.                         unset($menuItems[$key]['items'][$index], $data['items'][$index]);
  202.                     }
  203.                 }
  204.             }
  205.             if (empty($data['route']) && empty($data['items'])) {
  206.                 unset($menuItems[$key]);
  207.             }
  208.         }
  209.  
  210.         $menu = new CMenu();
  211.         $menu->htmlOptions          = array('class' => 'sidebar-menu');
  212.         $menu->submenuHtmlOptions   = array('class' => 'treeview-menu');
  213.  
  214.         foreach ($menuItems as $key => $data) {
  215.             $_route  = !empty($data['route']) ? $data['route'] : 'javascript:;';
  216.             $active  = false;
  217.  
  218.             if (!empty($data['active']) && is_string($data['active']) && strpos($route, $data['active']) === 0) {
  219.                 $active = true;
  220.             } elseif (!empty($data['active']) && is_array($data['active'])) {
  221.                 foreach ($data['active'] as $in) {
  222.                     if (strpos($route, $in) === 0) {
  223.                         $active = true;
  224.                         break;
  225.                     }
  226.                 }
  227.             }
  228.  
  229.             $item = array(
  230.                 'url'         => $_route,
  231.                 'label'       => '<i class="glyphicon '.$data['icon'].'"></i> <span>'.$data['name'].'</span>' . (!empty($data['items']) ? '<i class="fa fa-angle-left pull-right"></i>' : ''),
  232.                 'active'      => $active,
  233.                 'linkOptions' => !empty($data['linkOptions']) && is_array($data['linkOptions']) ? $data['linkOptions'] : array(),
  234.             );
  235.  
  236.             if (!empty($data['items'])) {
  237.                 foreach ($data['items'] as $index => $i) {
  238.                     if (isset($i['label'])) {
  239.                         $data['items'][$index]['label'] = '<i class="fa fa-angle-double-right"></i>' . $i['label'];
  240.                     }
  241.                 }
  242.                 $item['items']       = $data['items'];
  243.                 $item['itemOptions'] = array('class' => 'treeview');
  244.             }
  245.  
  246.             $menu->items[] = $item;
  247.         }
  248.  
  249.         $menu->run();
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment