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'); } }
public function getJavaScripts($dc) { $javascripts = JavaScriptModel::findBy('pid', $dc->activeRecord->pid, ['order' => 'sorting']); return $javascripts ? $this->buildOptions($javascripts) : []; }