Example #1
0
 public function getJavaScripts($dc)
 {
     $javascripts = JavaScriptModel::findAll(['order' => 'sorting']);
     return $javascripts ? $this->buildOptions($javascripts) : [];
 }
 public function collectPageJavaScripts(CollectAssetsEvent $event, $eventName)
 {
     $page = $event->getPage();
     $javaScriptIds = [];
     // add noinherit javascripts from current page
     if ($page->theme_plus_include_javascripts_noinherit) {
         $javaScriptIds = deserialize($page->theme_plus_javascripts_noinherit, true);
     }
     // add inherited javascripts from page trail
     while ($page) {
         if ($page->theme_plus_include_javascripts) {
             $javaScriptIds = array_merge($javaScriptIds, deserialize($page->theme_plus_javascripts, true));
         }
         $page = \PageModel::findByPk($page->pid);
     }
     if (empty($javaScriptIds)) {
         return;
     }
     $columns = ['(' . implode(' OR ', array_fill(0, count($javaScriptIds), 'id=?')) . ')'];
     $values = $javaScriptIds;
     if ($eventName == ThemePlusEvents::COLLECT_BODY_JAVASCRIPT_ASSETS) {
         if ($event->getLayout()->theme_plus_default_javascript_position == 'body') {
             $columns[] = 'position!=?';
             $values[] = 'head';
         } else {
             $columns[] = 'position=?';
             $values[] = 'body';
         }
     } else {
         if ($event->getLayout()->theme_plus_default_javascript_position == 'head') {
             $columns[] = 'position!=?';
             $values[] = 'body';
         } else {
             $columns[] = 'position=?';
             $values[] = 'head';
         }
     }
     $collection = JavaScriptModel::findBy($columns, $values, ['order' => 'sorting']);
     if ($collection) {
         $this->appendDatabaseAssets($event, $collection, 'js');
     }
 }
Example #3
0
 public function getJavaScripts($dc)
 {
     $javascripts = JavaScriptModel::findBy('pid', $dc->activeRecord->pid, ['order' => 'sorting']);
     return $javascripts ? $this->buildOptions($javascripts) : [];
 }