Exemple #1
0
 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;
 }
Exemple #2
0
 /**
  * @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);
 }
Exemple #4
0
 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)));
 }
Exemple #6
0
 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);
 }
Exemple #8
0
 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);
 }
Exemple #10
0
 /**
  * @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;
 }
Exemple #11
0
<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>
Exemple #12
0
 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;
 }
Exemple #13
0
}
?>

    <?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');
    ?>
Exemple #14
0
 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;
 }
Exemple #15
0
<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>
Exemple #16
0
                <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) {
Exemple #17
0
 public function generateAdminUrl($moduleId)
 {
     return ipActionUrl(array('admin' => 1, 'module_id' => $moduleId, 'security_token' => $this->backendSecurityToken()));
 }
Exemple #18
0
/**
 * 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);
    }
}
Exemple #19
0
 public function updateLinks()
 {
     Service::updateLinks();
     $_SESSION['Ip']['notes'][] = __('Links have been successfully updated.', 'Ip-admin');
     return new \Ip\Response\Redirect(ipActionUrl(array('aa' => 'System')));
 }
Exemple #20
0
<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>