controllerName = $controllerName; $this->view = $view; $this->data = $data; $this->includeStyles(); $this->includeScripts(); $this->wrapperStart(); $this->includeMenu(); $this->includeHeader(); $this->containerStart(); $this->includeView(); $this->containerEnd(); $this->menuEnd(); $this->wrapperEnd(); } private function includeStyles() { Router::addStyle(false, ACYC_CSS.'style.min.css?time='.time()); // Add the controller style if exists if (file_exists(ACYC_MEDIA.'css'.DS.'controllers'.DS.strtolower($this->controllerName).'.min.css')) { Router::addStyle(false, ACYC_CSS.'controllers/'.strtolower($this->controllerName).'.min.css?time='.time()); } // Add the layout style if exists if (file_exists(ACYC_MEDIA.'css'.DS.'layouts'.DS.strtolower($this->controllerName).DS.strtolower($this->view).'.min.css')) { Router::addStyle(false, ACYC_CSS.'layouts/'.strtolower($this->controllerName).'/'.strtolower($this->view).'.min.css?time='.time()); } } private function includeScripts() { $this->includeLanguagesJavascript(); $this->loadAssets(); Router::initView(); Router::addScript(false, ACYC_JS.'index.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/pagination.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/status.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/tooltip.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/notice.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/database.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/modal.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/form.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/fields.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/listing.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/ajax.min.js?time='.time()); if (Miscellaneous::isLeftMenuNecessary()) { Router::addScript(false, ACYC_JS.'services/cookie.min.js?time='.time()); Router::addScript(false, ACYC_JS.'services/joomlaMenu.min.js?time='.time()); } if (strtolower($this->controllerName) === 'dashboard') { Router::addScript(false, ACYC_JS.'libraries/apexchart.min.js'); } Router::addScript(false, ACYC_JS.'libraries/select2.min.js'); Router::addStyle(false, ACYC_CSS.'libraries/select2.min.css'); // Add the controller script if exists if (file_exists(ACYC_MEDIA.'js'.DS.'controllers'.DS.strtolower($this->controllerName).'.min.js')) { Router::addScript(false, ACYC_JS.'controllers/'.strtolower($this->controllerName).'.min.js?time='.time()); } // Add the layout script if exists if (file_exists(ACYC_MEDIA.'js'.DS.'layouts'.DS.strtolower($this->controllerName).DS.strtolower($this->view).'.min.js')) { Router::addScript(false, ACYC_JS.'layouts/'.strtolower($this->controllerName).'/'.strtolower($this->view).'.min.js?time='.time()); } } private function includeMenu() { if (Miscellaneous::isLeftMenuNecessary()) echo Miscellaneous::getLeftMenu(strtolower($this->controllerName)).'
'; } private function menuEnd() { if (Miscellaneous::isLeftMenuNecessary()) echo '
'; } private function includeView() { $filePath = ACYC_CORE_VIEW.$this->controllerName.DS.$this->view.'.php'; if (!file_exists($filePath)) Router::redirect(Url::completeLink('dashboard', false, true)); include_once $filePath; } private function wrapperStart() { echo '
'; } private function wrapperEnd() { echo '
'; } private function includeHeader() { if (!empty($this->data['header'])) echo $this->data['header']; Message::displayMessages(); } private function containerStart() { echo '
'; } private function containerEnd() { echo '
'; } private function includeLanguagesJavascript() { $languages = [ 'ACYC_SAVE' => __('Save', 'acychecker'), 'ACYC_PROCESS' => __('Process', 'acychecker'), 'ACYC_DISPOSABLE' => __('Disposable', 'acychecker'), 'ACYC_FREE' => __('Free', 'acychecker'), 'ACYC_ACCEPT_ALL' => __('Accept all', 'acychecker'), 'ACYC_ROLE_EMAIL' => __('Role email', 'acychecker'), 'ACYC_ROLE_BASED' => __('Role based', 'acychecker'), 'ACYC_FREE_DOMAIN' => __('Free domain', 'acychecker'), 'ACYC_INVALID_SMTP' => __('Invalid SMTP', 'acychecker'), 'ACYC_DOMAIN_NOT_EXISTS' => __('Domain doesn\'t exist', 'acychecker'), 'ACYC_TOTAL' => __('Total', 'acychecker'), 'ACYC_ARE_YOUR_SURE_FREE_DOMAINS_CONFIRM' => __('Are you sure to block people using free domains like Gmail or Yahoo from your website?', 'acychecker'), 'ACYC_CONFIRM_DELETE_ALL_TESTS' => __('Please confirm you would like to delete all the previous test results', 'acychecker'), 'ACYC_NO_RESULTS_FOUND' => __('No results found', 'acychecker'), 'ACYC_SELECT2_SEARCHING' => __('Searching...', 'acychecker'), 'ACYC_SELECT2_LIMIT_X_ITEMS' => __('You can only select %s items', 'acychecker'), 'ACYC_SELECT2_LOADING_MORE_RESULTS' => __('Loading more results...', 'acychecker'), 'ACYC_SELECT2_ENTER_X_CHARACTERS' => __('Please enter %s or more characters', 'acychecker'), 'ACYC_SELECT2_DELETE_X_CHARACTERS' => __('Please delete %s characters', 'acychecker'), 'ACYC_SELECT2_RESULTS_NOT_LOADED' => __('The results could not be loaded.', 'acychecker'), 'ACYC_CONFIRM_CANCEL_TESTS' => __('Please confirm you would like to cancel pending tests', 'acychecker'), 'ACYC_BLACKLISTED' => __('Blacklisted', 'acychecker'), 'ACYC_ARE_YOU_SURE' => __('Are you sure?', 'acychecker'), 'ACYC_UNBLOCK_USERS_CONFIRM' => __('Are you sure you want to unblock these users?', 'acychecker'), 'ACYC_BLOCK_USERS_CONFIRM' => __('Are you sure you want to block these users?', 'acychecker'), 'ACYC_DELETE_USERS_CONFIRM' => __('Are you sure you want to delete these users? This cannot be cancelled afterwards.', 'acychecker'), 'ACYC_ARE_YOUR_SURE_DELETE_USERS_CONFIRM' => __('Be careful you will really delete the users, are you sure of that?', 'acychecker'), 'ACYC_MANUAL' => __('Manual action', 'acychecker'), 'ACYC_PLEASE_SELECT_A_CONDITION' => __('Please select at least one condition first', 'acychecker'), 'ACYC_ARE_YOU_SURE_DELETE' => __('Are you sure you want to delete these elements?', 'acychecker'), 'ACYC_USERS_BLOCKED' => __('%s users blocked', 'acychecker'), 'ACYC_USERS_DELETED' => __('%s users deleted', 'acychecker'), 'ACYC_SELECT_FINISHED_TESTS' => __('Please select only finished tests', 'acychecker'), 'ACYC_NO_USER_TABLE_SELECTED' => __('Please select at least one table', 'acychecker'), 'ACYC_ACTIONS_EXECUTED_ALL_DESC' => __('Actions will be executed on users matching the selected tables and conditions.', 'acychecker'), 'ACYC_ACTIONS_EXECUTED_SELECTED_DESC' => __('Actions will be executed on users matching the selected tables and conditions, only among the %s you selected.', 'acychecker'), ]; $javascript = 'var ACYC_LANGUAGES = {'; foreach ($languages as $key => $translation) { $javascript .= $key.': "'.Security::escape($translation).'",'; } $javascript = rtrim($javascript, ','); $javascript .= '};'; Router::addScript(true, $javascript); } private function loadAssets() { $javascript = ' var ACYC_CMS = "'.ACYC_CMS.'";'; if ('joomla' == ACYC_CMS) { $javascript .= ' var ACYC_J40 = "'.ACYC_J40.'";'; } Router::addScript(true, $javascript); Router::addScript( false, ACYC_JS.'libraries/foundation.min.js?v='.filemtime(ACYC_MEDIA.'js'.DS.'libraries'.DS.'foundation.min.js') ); } }