protected static function getControllerMenu($class) { $reflector = new \ReflectionClass($class); $methods = $reflector->getMethods(); $submenuItems = array(); foreach ($methods as $method) { if (in_array($method, array('index'))) { continue; } if (!$method->isPublic()) { continue; } $docComment = $method->getDocComment(); if (preg_match_all('/@(\\w+)\\s+(.*)\\r?\\n/m', $docComment, $matches)) { $result = array_combine($matches[1], $matches[2]); if (isset($result['ipSubmenu'])) { $menuItem = new \Ip\Menu\Item(); $menuItem->setTitle(__($result['ipSubmenu'], ipRoute()->plugin(), false)); $menuItem->setUrl(ipActionUrl(array('aa' => ipRoute()->plugin() . '.' . $method->getName()))); if (ipRoute()->action() == $method->getName()) { $menuItem->markAsCurrent(true); } $submenuItems[] = $menuItem; } } } if (!empty($submenuItems)) { return $submenuItems; } return null; }
/** * @return \Ip\Menu\Item[] */ public static function getSubmenuItems() { $modules = self::getModuleNames(); $submenuItems = array(); if (0) { // It is for translation engine to find following strings __('Content', 'Ip-admin'); __('Pages', 'Ip-admin'); __('Design', 'Ip-admin'); __('Plugins', 'Ip-admin'); __('Config', 'Ip-admin'); __('Languages', 'Ip-admin'); __('System', 'Ip-admin'); } foreach ($modules as $module) { $menuItem = new \Ip\Menu\Item(); $title = $module; if ($title == 'Email') { $title = 'Email log'; } $menuItem->setTitle(__($title, 'Ip-admin', false)); // $menuItem->setUrl(ipActionUrl(array('aa' => $module . '.index'))); if (ipRoute()->controllerClass() == 'Ip\\Internal\\' . $module . '\\AdminController') { $menuItem->markAsCurrent(true); } if (ipAdminPermission($module)) { $submenuItems[] = $menuItem; } } return $submenuItems; }
public function generateHtml($revisionId, $widgetId, $data, $skin) { if (!$this->gmapsApiAvailable()) { if (ipIsManagementState()) { return '<div class="note"><a href="' . ipActionUrl(array('aa' => 'Config')) . '">' . __("Maps widget is based on Google Maps. Please set up Google Maps API key to make it work.", 'Ip-admin') . '</a></div>'; } else { //don't show anything on public site return ''; } } if (!empty($data['height'])) { $data['height'] = (int) $data['height'] . 'px'; } else { $data['height'] = '250px'; } if (empty($data['mapTypeId'])) { $data['mapTypeId'] = null; } if (empty($data['zoom'])) { $data['zoom'] = null; } if (empty($data['lat'])) { $data['lat'] = null; } if (empty($data['lng'])) { $data['lng'] = null; } return parent::generateHtml($revisionId, $widgetId, $data, $skin); }
protected static function getAdminNavbarHtml() { $requestData = \Ip\ServiceLocator::request()->getRequest(); $curModTitle = ''; $curModUrl = ''; $curModIcon = ''; if (!empty($requestData['aa'])) { $parts = explode('.', $requestData['aa']); $curModule = $parts[0]; } else { $curModule = "Content"; } if (isset($curModule) && $curModule) { $title = $curModule; $plugin = \Ip\Internal\Plugins\Service::getPluginConfig($curModule); if ($plugin) { $title = $plugin['title']; } $curModTitle = __($title, 'Ip-admin', false); $curModUrl = ipActionUrl(array('aa' => $curModule . '.index')); $curModIcon = Model::getAdminMenuItemIcon($curModule); } $navbarButtons = array(array('text' => '', 'hint' => __('Logout', 'Ip-admin', false), 'url' => ipActionUrl(array('sa' => 'Admin.logout')), 'class' => 'ipsAdminLogout', 'faIcon' => 'fa-power-off')); $navbarButtons = ipFilter('ipAdminNavbarButtons', $navbarButtons); $navbarCenterElements = ipFilter('ipAdminNavbarCenterElements', array()); $data = array('menuItems' => Model::instance()->getAdminMenuItems($curModule), 'curModTitle' => $curModTitle, 'curModUrl' => $curModUrl, 'curModIcon' => $curModIcon, 'navbarButtons' => array_reverse($navbarButtons), 'navbarCenterElements' => $navbarCenterElements); $html = ipView('view/navbar.php', $data)->render(); return $html; }
public function index() { ipAddCss('assets/repositoryLayout.css'); ipAddJs('assets/layout.js'); $routeVariables = array('aa' => 'RepositoryManager.repository', 'disableAdminNavbar' => 1); // ipResponse()->setLayoutVariable('repositoryUrl', ipActionUrl($routeVariables)); // ipResponse()->setLayout('Plugin/RepositoryManager/view/index.php'); //// ipSetLayout('view/index.php'); // return 'a'; ipResponse()->setLayoutVariable('removeAdminContentWrapper', true); return ipView('view/index.php', array('repositoryUrl' => ipActionUrl($routeVariables))); }
public function removeAdminIsAutogeneratedAjax() { ipRequest()->mustBePost(); // Removing temporary data ipStorage()->remove('Ip', 'adminIsAutogenerated'); // If user wants to change credentials, redirecting to Administrators list if (ipRequest()->getPost('action') == 'change') { // todo: redirect and automatically select user and open popup $redirect = ipActionUrl(array('aa' => 'Administrators.index')) . "#/hash=&administrator=" . \Ip\Internal\Admin\Backend::userId(); \Ip\Internal\System\Model::sendUsageStatistics(array('action' => 'Install.adminChange')); return \Ip\Response\JsonRpc::result(array('redirect' => $redirect)); } \Ip\Internal\System\Model::sendUsageStatistics(array('action' => 'Install.adminKeep')); return \Ip\Response\JsonRpc::result(array('close' => 1)); }
/** * MasonryGrid.js ask to provide widget management popup HTML. This controller does this. * @return \Ip\Response\Json * @throws \Ip\Exception\View */ public function widgetPopupHtml() { $versionParts = explode('.', \Ip\Application::getVersion()); if (version_compare(\Ip\Application::getVersion(), '4.2.1') < 0) { return new \Ip\Response('This widget can be used on ImpressPages 4.2.1 or later.'); } $widgetId = ipRequest()->getQuery('widgetId'); $widgetRecord = \Ip\Internal\Content\Model::getWidgetRecord($widgetId); $widgetData = $widgetRecord['data']; $plugin = ipRoute()->plugin(); //Render form and popup HTML $viewData = array('gridUrl' => ipActionUrl(array('aa' => $plugin . '.grid', 'disableAdminNavbar' => 1, 'widgetId' => $widgetId))); $popupHtml = ipView('view/editPopup.php', $viewData)->render(); $data = array('popup' => $popupHtml); //Return rendered widget management popup HTML in JSON format return new \Ip\Response\Json($data); }
public static function sendResetPasswordLink($userId) { $user = self::get($userId); if (!$user) { throw new \Ip\Exception("User doesn't exist"); } $urlData = array('sa' => 'Admin.passwordReset', 'id' => $userId, 'secret' => self::generatePasswordResetSecret($userId)); $contentData = array('link' => ipActionUrl($urlData)); $content = ipView('view/passwordResetContent.php', $contentData)->render(); $emailData = array('content' => $content); $email = ipEmailTemplate($emailData); $from = ipGetOptionLang('Config.websiteEmail'); $fromName = ipGetOptionLang('Config.websiteTitle'); $subject = __('Password reset instructions', 'Ip-admin', false); $to = $user['email']; $toName = $user['username']; ipSendEmail($from, $fromName, $to, $toName, $subject, $email); }
/** * GridWidget.js ask to provide widget management popup HTML. This controller does this. * @return \Ip\Response\Json * @throws \Ip\Exception\View */ public function widgetPopupHtml() { $versionParts = explode('.', \Ip\Application::getVersion()); if (empty($versionParts[2]) || $versionParts[0] < 4 || $versionParts[0] == 4 && $versionParts[1] < 2 || $versionParts[0] == 4 && ($versionParts[1] = 2 && $versionParts[2] < 1)) { return new \Ip\Response('This widget can be used on ImpressPages 4.2.1 or later.'); } $widgetId = ipRequest()->getQuery('widgetId'); $widgetRecord = \Ip\Internal\Content\Model::getWidgetRecord($widgetId); $widgetData = $widgetRecord['data']; //create form prepopulated with current widget data $form = $this->managementForm($widgetData); $plugin = ipRoute()->plugin(); //Render form and popup HTML $viewData = array('gridUrl' => ipActionUrl(array('aa' => $plugin . '.grid', 'disableAdminNavbar' => 1, 'widgetId' => $widgetId))); $popupHtml = ipView('view/editPopup.php', $viewData)->render(); $data = array('popup' => $popupHtml); //Return rendered widget management popup HTML in JSON format return new \Ip\Response\Json($data); }
/** * @param string $currentModule Name of the current (active) module * @return \Ip\Internal\Admin\MenuItem[] */ public function getAdminMenuItems($currentModule) { $answer = array(); $modules = \Ip\Internal\Plugins\Model::getModules(); foreach ($modules as $module) { // skipping modules that don't have 'index' (default) action in AdminController $controllerClass = 'Ip\\Internal\\' . $module . '\\AdminController'; if (!class_exists($controllerClass) || !method_exists($controllerClass, 'index')) { continue; } $moduleItem = new \Ip\Internal\Admin\MenuItem(); $moduleItem->setTitle(__($module, 'Ip-admin', false)); $moduleItem->setUrl(ipActionUrl(array('aa' => $module . '.index'))); $moduleItem->setIcon($this->getAdminMenuItemIcon($module)); if ($module == $currentModule) { $moduleItem->markAsCurrent(true); } if (ipAdminPermission($module)) { $answer[] = $moduleItem; } } $plugins = \Ip\Internal\Plugins\Service::getActivePlugins(); foreach ($plugins as $plugin) { $controllerClass = '\\Plugin\\' . $plugin['name'] . '\\AdminController'; if (!class_exists($controllerClass) || !method_exists($controllerClass, 'index')) { continue; } $moduleItem = new \Ip\Internal\Admin\MenuItem(); $moduleItem->setTitle(__($plugin['title'], 'Ip-admin', false)); $moduleItem->setUrl(ipActionUrl(array('aa' => $plugin['name']))); $moduleItem->setIcon($this->getAdminMenuItemIcon($plugin['name'])); if ($plugin['name'] == $currentModule) { $moduleItem->markAsCurrent(true); } if (ipAdminPermission($plugin['name'])) { $answer[] = $moduleItem; } } $answer = ipFilter('ipAdminMenu', $answer); return $answer; }
<div class="loginTitle"> <h1><?php _e('Login', 'Ip-admin'); ?> </h1> </div> <div class="ip loginContent"> <?php echo $loginForm->render(); ?> <p class="alternativeLink"> <a href="<?php echo ipActionUrl(array('sa' => 'Admin.passwordResetForm')); ?> "><?php _e('Reset password', 'Ip-admin'); ?> </a> </p> </div>
public static function ipAdminNavbarButtons($buttons, $info) { $breadcrumb = ipContent()->getBreadcrumb(); if (!empty($breadcrumb[0])) { $rootPage = $breadcrumb[0]; $menu = ipContent()->getPage($rootPage->getParentId()); $alias = $menu->getAlias(); } else { $alias = ''; } if (ipContent()->getCurrentPage()) { if (!ipAdminPermission('Content')) { //Do nothing } elseif (ipIsManagementState()) { $buttons[] = array('text' => __('Preview', 'Ip-admin', false), 'hint' => __('Hides admin tools', 'Ip-admin', false), 'class' => 'ipsContentPreview', 'faIcon' => 'fa-eye', 'url' => '#'); } else { $buttons[] = array('text' => __('Edit', 'Ip-admin', false), 'hint' => __('Show widgets', 'Ip-admin', false), 'class' => 'ipsContentEdit', 'faIcon' => 'fa-edit', 'url' => '#'); } if (ipAdminPermission('Pages')) { $buttons[] = array('text' => __('Settings', 'Ip-admin', false), 'hint' => __('Page settings', 'Ip-admin', false), 'class' => 'ipsAdminPageSettings', 'faIcon' => 'fa-gear', 'url' => ipActionUrl(array('aa' => 'Pages.index')) . '#hash&language=' . ipContent()->getCurrentLanguage()->getCode() . '&menu=' . $alias . '&page=' . ipContent()->getCurrentPage()->getId()); } } return $buttons; }
} ?> <?php if ($changedUrl) { ?> <h2><?php _e('Website\'s URL seems to be changed', 'Ip-admin'); ?> </h2> <p><?php echo sprintf(__('We have detected that website\'s URL has changed. Would you like to update links on your website from %s to %s ?', 'Ip-admin'), '<b>' . $oldUrl . '</b>', '<b>' . $newUrl . '</b>'); ?> </p> <a href="<?php echo ipActionUrl(array('aa' => 'System.updateLinks')); ?> " class="ipsUpdateLinks btn btn-primary"><?php _e('Update links', 'Ip-admin'); ?> </a> <?php } ?> <?php if ($migrationsAvailable) { ?> <h2><?php _e('Database migrations', 'Ip-admin'); ?>
public function passwordResetAjax2() { ipRequest()->mustBePost(); $validateForm = FormHelper::getPasswordResetForm2(); $errors = $validateForm->validate(ipRequest()->getPost()); $userId = ipRequest()->getPost('userId'); $secret = ipRequest()->getPost('secret'); $password = ipRequest()->getPost('password'); try { \Ip\Internal\Administrators\Service::resetPassword($userId, $secret, $password); } catch (\Ip\Exception $e) { $user['global_error'] = $e->getMessage(); } if (empty($errors)) { $answer = array('status' => 'success', 'redirectUrl' => ipActionUrl(array('sa' => 'Admin.passwordResetSuccess'))); } else { $answer = array('status' => 'error', 'errors' => $errors); } $response = new \Ip\Response\Json($answer); return $response; }
<div class="ipModulePlugins ipsModulePlugins" ng-app="Plugins" ng-controller="ipPlugins"> <div class="_outer ipsModulePluginsContainer"> <div class="_container _plugins ipsPlugins" ng-cloak> <div class="_actions"> <a href="<?php echo ipActionUrl(array('aa' => 'Plugins.market')); ?> " class="btn btn-new"><i class="fa fa-plus"></i> <?php _e('Add', 'Ip-admin'); ?> </a> </div> <ul> <li ng-repeat="plugin in pluginList"> <a href="" ng-click="setPluginHash(plugin)" class="_plugin ipsPlugin" ng-class="{active: plugin == selectedPlugin, disabled: !plugin.active}"> <span class="_heading"> <i class="fa fa-cog"></i> <span class="_name">{{plugin.title}}</span> <span class="label label-{{plugin.labelType}}">{{plugin.label}}</span> </span> <p class="_description">{{plugin.description}}</p> </a> </li> </ul> </div> <div class="_container _properties ipsProperties"></div> </div> </div>
<p class="navbar-text"><?php _e('Menu', 'Ip-admin'); ?> </p> </div> <div class="_menuContainer ipsAdminMenuBlockContainer"> <nav> <?php $data = array('items' => $menuItems, 'depth' => 1, 'attributesStr' => 'class="nav nav-stacked"', 'active' => 'active', 'selected' => 'selected', 'disabled' => 'disabled', 'crumb' => 'crumb', 'parent' => 'parent', 'children' => 'children'); $view = ipView('menu.php', $data); echo $view->render(); ?> <ul class="nav nav-stacked"> <li> <a href="<?php echo ipActionUrl(array('sa' => 'Admin.logout')); ?> "> <i class="fa fa-fw fa-power-off"></i> <?php _e('Logout', 'Ip-admin'); ?> </a> </li> </ul> </nav> </div> </div> <?php if ($curModTitle) {
public function generateAdminUrl($moduleId) { return ipActionUrl(array('admin' => 1, 'module_id' => $moduleId, 'security_token' => $this->backendSecurityToken())); }
/** * Initialize grid in controller * @param $config array * @throws Ip\Exception * @throws Ip\Exception\View * @return \Ip\Response\Json|\Ip\Response\JsonRpc */ function ipGridController($config) { $request = ipRequest()->getRequest(); if (empty($request['method'])) { //Grid initialization. Add JS and display GRID's HTML ipAddJs('Ip/Internal/Grid/assets/grid.js'); ipAddJs('Ip/Internal/Grid/assets/gridInit.js'); ipAddJs('Ip/Internal/Grid/assets/subgridField.js'); $backtrace = debug_backtrace(); if (empty($backtrace[1]['object']) || empty($backtrace[1]['function']) || empty($backtrace[1]['class'])) { throw new \Ip\Exception('ipGridController() function must be used only in controller.'); } $method = $backtrace[1]['function']; $controllerClassParts = explode('\\', $backtrace[1]['class']); if (empty($controllerClassParts[2])) { throw new \Ip\Exception('ipGridController() function must be used only in controller (' . $backtrace[1]['class'] . '). '); } $plugin = $controllerClassParts[1]; switch ($controllerClassParts[2]) { case 'AdminController': $gateway = array('aa' => $plugin . '.' . $method); break; case 'SiteController': $gateway = array('sa' => $plugin . '.' . $method); break; case 'PublicController': $gateway = array('pa' => $plugin . '.' . $method); break; default: throw new \Ip\Exception('ipGridController() function must be used only in controller (' . $backtrace[1]['class'] . '). '); } if (!empty($config['gatewayData'])) { $gateway = array_merge($config['gatewayData'], $gateway); } $variables = array('gateway' => ipActionUrl($gateway)); $content = ipView('Ip/Internal/Grid/view/placeholder.php', $variables); return $content; } else { //GRID AJAX method $worker = new \Ip\Internal\Grid\Worker($config); $result = $worker->handleMethod(ipRequest()); if (is_array($result) && !empty($result['error']) && !empty($result['errors'])) { return new \Ip\Response\Json($result); } return new \Ip\Response\JsonRpc($result); } }
public function updateLinks() { Service::updateLinks(); $_SESSION['Ip']['notes'][] = __('Links have been successfully updated.', 'Ip-admin'); return new \Ip\Response\Redirect(ipActionUrl(array('aa' => 'System'))); }
<div class="ipModulePluginsMarket"> <div class="_popup ipsPluginMarketPopup hidden"> <div class="_container" id="ipsModulePluginMarketContainer" data-marketurl="<?php echo esc($marketUrl); ?> "> <a class="btn btn-default _back" href="<?php echo ipActionUrl(array('aa' => 'Plugins.index')); ?> "><i class="fa fa-angle-double-left"></i> <?php _e('My Plugins', 'Ip-admin'); ?> </a> </div> </div> </div>