/** * Generate admin toolbar links * */ public function AdminLinks() { global $langmessage; $admin_links = $this->admin_links; $menu_permissions = \gp\admin\Tools::HasPermission('Admin_Menu'); if ($menu_permissions) { //visibility $q = 'cmd=ToggleVisibility'; $label = '<i class="fa fa-eye-slash"></i> ' . $langmessage['Visibility'] . ': ' . $langmessage['Private']; if (!$this->visibility) { $label = '<i class="fa fa-eye"></i> ' . $langmessage['Visibility'] . ': ' . $langmessage['Public']; $q .= '&visibility=private'; } $attrs = array('title' => $label, 'data-cmd' => 'creq'); $admin_links[] = \gp\tool::Link($this->title, $label, $q, $attrs); } // page options: less frequently used links that don't have to do with editing the content of the page $option_links = array(); if ($menu_permissions) { $option_links[] = \gp\tool::Link($this->title, $langmessage['rename/details'], 'cmd=renameform&index=' . urlencode($this->gp_index), 'data-cmd="gpajax"'); $option_links[] = \gp\tool::Link('Admin/Menu', $langmessage['current_layout'], 'cmd=layout&from=page&index=' . urlencode($this->gp_index), array('title' => $langmessage['current_layout'], 'data-cmd' => 'gpabox')); } if (\gp\admin\Tools::HasPermission('Admin_User')) { $option_links[] = \gp\tool::Link('Admin/Users', $langmessage['permissions'], 'cmd=file_permissions&index=' . urlencode($this->gp_index), array('title' => $langmessage['permissions'], 'data-cmd' => 'gpabox')); } if (!empty($option_links)) { $admin_links[$langmessage['options']] = $option_links; } return $admin_links; }
/** * Find the requested admin script and execute it if the user has permissions to view it * */ private function RunAdminScript() { global $dataDir, $langmessage; if (strtolower($this->requested) == 'admin') { $this->AdminPanel(); return; } //resolve request for /Admin_Theme_Content if the request is for /Admin_Theme_Conent/1234 $request_string = str_replace('_', '/', $this->requested); $parts = explode('/', $request_string); do { $request_string = implode('/', $parts); $scriptinfo = $this->GetScriptInfo($request_string); if (is_array($scriptinfo)) { if (\gp\admin\Tools::HasPermission($request_string)) { $this->OrganizeFrequentScripts($request_string); \gp\tool\Output::ExecInfo($scriptinfo, array('page' => $this)); return; } message($langmessage['not_permitted']); $this->AdminPanel(); return; } //these are here because they should be available to everyone switch ($request_string) { case 'Admin/Finder': if (\gp\admin\Tools::HasPermission('Admin_Uploaded')) { includeFile('thirdparty/finder/connector.php'); return; } break; } array_pop($parts); } while (count($parts)); $this->Redirect(); }
/** * Plugin option links * */ function OptionLinks($addon_key, $addon_config, $format = false) { global $langmessage, $gpLayouts; $list = array(); if (!isset($addon_config['is_theme']) || !$addon_config['is_theme']) { //editable text if (isset($addon_config['editable_text']) && \gp\admin\Tools::HasPermission('Admin_Theme_Content')) { $list[] = \gp\tool::Link('Admin_Theme_Content/Text', $langmessage['editable_text'], 'cmd=AddonTextForm&addon=' . urlencode($addon_key), array('title' => urlencode($langmessage['editable_text']), 'data-cmd' => 'gpabox')); } //upgrade link if (isset($addon_config['upgrade_from'])) { $list[] = '<a href="?cmd=LocalInstall&source=' . rawurlencode($addon_config['upgrade_from']) . '" data-cmd="cnreq">' . $langmessage['upgrade'] . '</a>'; } //uninstall $list[] = \gp\tool::Link('Admin/Addons', $langmessage['uninstall'], 'cmd=uninstall&addon=' . rawurlencode($addon_key), 'data-cmd="gpabox"'); //version if (!empty($addon_config['version'])) { $list[] = '<a>' . $langmessage['Your_version'] . ' ' . $addon_config['version'] . '</a>'; } //rating if (isset($addon_config['id']) && is_numeric($addon_config['id'])) { $id = $addon_config['id']; $rating = 5; if (isset($this->addonReviews[$id])) { $rating = $this->addonReviews[$id]['rating']; } $label = $langmessage['rate_this_addon'] . ' ' . $this->ShowRating($id, $rating); $list[] = '<span>' . $label . '</span>'; } echo $this->FormatList($list, $langmessage['options'], $format); return; } //show list of themes using these addons foreach ($gpLayouts as $layout_id => $layout_info) { if (!isset($layout_info['addon_key']) || $layout_info['addon_key'] !== $addon_key) { continue; } $item = '<span><span class="layout_color_id" style="background:' . $layout_info['color'] . '"></span> '; $item .= \gp\tool::Link('Admin_Theme_Content', $layout_info['label']); $item .= ' ( '; $item .= \gp\tool::Link('Admin_Theme_Content/Edit/' . $layout_id, $langmessage['edit']); $item .= ' )</span>'; $list[] = $item; } echo $this->FormatList($list, $langmessage['layouts'], $format); }
/** * Generate admin toolbar links * */ public function AdminLinks() { global $langmessage; //viewing revision if (isset($this->revision)) { return $this->RevisionLinks(); } $admin_links = array(); //history $backup_files = $this->BackupFiles(); $times = array_keys($backup_files); $admin_links[] = \gp\tool::Link($this->title, '<i class="fa fa-backward"></i> ' . $langmessage['Previous'], 'cmd=ViewRevision&time=' . array_pop($times), array('data-cmd' => 'cnreq')); $admin_links[] = \gp\tool::Link($this->title, '<i class="fa fa-history"></i> ' . $langmessage['Revision History'], 'cmd=ViewHistory', array('title' => $langmessage['Revision History'], 'data-cmd' => 'gpabox')); if ($this->permission_menu) { //visibility $q = 'cmd=ToggleVisibility'; $label = '<i class="fa fa-eye-slash"></i> ' . $langmessage['Visibility'] . ': ' . $langmessage['Private']; if (!$this->visibility) { $label = '<i class="fa fa-eye"></i> ' . $langmessage['Visibility'] . ': ' . $langmessage['Public']; $q .= '&visibility=private'; } $attrs = array('title' => $label, 'data-cmd' => 'creq'); $admin_links[] = \gp\tool::Link($this->title, $label, $q, $attrs); } // page options: less frequently used links that don't have to do with editing the content of the page $option_links = array(); if ($this->permission_menu) { $option_links[] = \gp\tool::Link($this->title, $langmessage['rename/details'], 'cmd=renameform&index=' . urlencode($this->gp_index), 'data-cmd="gpajax"'); $option_links[] = \gp\tool::Link('Admin/Menu', $langmessage['current_layout'], 'cmd=layout&from=page&index=' . urlencode($this->gp_index), array('title' => $langmessage['current_layout'], 'data-cmd' => 'gpabox')); $option_links[] = \gp\tool::Link('Admin/Menu/Ajax', $langmessage['Copy'], 'cmd=CopyForm&redir=redir&index=' . urlencode($this->gp_index), array('title' => $langmessage['Copy'], 'data-cmd' => 'gpabox')); } if (\gp\admin\Tools::HasPermission('Admin_User')) { $option_links[] = \gp\tool::Link('Admin/Users', $langmessage['permissions'], 'cmd=file_permissions&index=' . urlencode($this->gp_index), array('title' => $langmessage['permissions'], 'data-cmd' => 'gpabox')); } if ($this->permission_menu) { $option_links[] = \gp\tool::Link('Admin/Menu/Ajax', $langmessage['delete_file'], 'cmd=MoveToTrash&index=' . urlencode($this->gp_index), array('data-cmd' => 'postlink', 'title' => $langmessage['delete_page'], 'class' => 'gpconfirm')); } if (!empty($option_links)) { $admin_links[$langmessage['options']] = $option_links; } //publish draft if ($this->permission_edit && $this->draft_exists) { $admin_links[] = \gp\tool::Link($this->title, '<i class="fa fa-check"></i> ' . $langmessage['Publish Draft'], 'cmd=PublishDraft', array('data-cmd' => 'creq', 'class' => 'msg_publish_draft')); } return array_merge($admin_links, $this->admin_links); }
/** * Output html for the menu editing options displayed for selected titles * */ public function MenuSkeleton() { global $langmessage; //page options echo '<b>' . $langmessage['page_options'] . '</b>'; echo '<span>'; $img = '<i class="menu_icon fa fa-pencil"></i>'; echo '<a href="[url]" class="view_edit_link not_multiple">' . $img . htmlspecialchars($langmessage['view/edit_page']) . '</a>'; $img = '<i class="menu_icon fa fa-gears"></i>'; $attrs = array('title' => $langmessage['rename/details'], 'data-cmd' => 'gpajax', 'class' => 'not_multiple'); echo $this->Link('Admin/Menu/Ajax', $img . $langmessage['rename/details'], 'cmd=renameform&index=[key]', $attrs); $img = '<i class="fa fa-eye-slash menu_icon"></i>'; $q = 'cmd=ToggleVisibility&index=[key]'; $label = $langmessage['Visibility'] . ': ' . $langmessage['Private']; $attrs = array('title' => $label, 'data-cmd' => 'gpajax', 'class' => 'vis_private'); echo $this->Link('Admin/Menu/Ajax', $img . $label, $q, $attrs); $img = '<i class="fa fa-eye menu_icon"></i>'; $label = $langmessage['Visibility'] . ': ' . $langmessage['Public']; $attrs = array('title' => $label, 'data-cmd' => 'gpajax', 'class' => 'vis_public not_multiple'); $q .= '&visibility=private'; echo $this->Link('Admin/Menu/Ajax', $img . $label, $q, $attrs); echo '<a href="[url]?cmd=ViewHistory" class="view_edit_link not_multiple not_special" data-cmd="gpabox"><i class="fa fa-history menu_icon"></i>' . htmlspecialchars($langmessage['Revision History']) . '</a>'; $img = '<i class="menu_icon fa fa-files-o"></i>'; $attrs = array('title' => $langmessage['Copy'], 'data-cmd' => 'gpabox', 'class' => 'not_multiple not_special'); echo $this->Link('Admin/Menu/Ajax', $img . $langmessage['Copy'], 'cmd=CopyForm&index=[key]', $attrs); if (\gp\admin\Tools::HasPermission('Admin_User')) { $img = '<i class="menu_icon fa fa-user"></i>'; $attrs = array('title' => $langmessage['permissions'], 'data-cmd' => 'gpabox'); echo $this->Link('Admin/Users', $img . $langmessage['permissions'], 'cmd=file_permissions&index=[key]', $attrs); } $img = '<i class="menu_icon fa fa-scissors"></i>'; $attrs = array('title' => $langmessage['rm_from_menu'], 'data-cmd' => 'postlink', 'class' => 'gpconfirm'); echo $this->Link('Admin/Menu/Ajax', $img . $langmessage['rm_from_menu'], 'cmd=hide&index=[key]', $attrs); $img = '<i class="menu_icon fa fa-trash"></i>'; $attrs = array('title' => $langmessage['delete_page'], 'data-cmd' => 'postlink', 'class' => 'gpconfirm not_special'); echo $this->Link('Admin/Menu/Ajax', $img . $langmessage['delete'], 'cmd=MoveToTrash&index=[key]', $attrs); echo '[opts]'; //replaced with the contents of \gp\tool\Plugins::Action('MenuPageOptions',array($title,$menu_key,$menu_value,$layout_info)); echo '</span>'; //layout if ($this->is_main_menu) { echo '<div class="not_multiple">'; echo '<b>' . $langmessage['layout'] . '</b>'; echo '<span>'; //has_layout $img = '<span class="layout_icon"></span>'; echo $this->Link('Admin/Menu', $img . '[layout_label]', 'cmd=layout&index=[key]', ' title="' . $langmessage['layout'] . '" data-cmd="gpabox" class="has_layout"'); $img = '<i class="menu_icon fa fa-undo"></i>'; echo $this->Link('Admin/Menu', $img . $langmessage['restore'], 'cmd=restorelayout&index=[key]', array('data-cmd' => 'postlink', 'title' => $langmessage['restore'], 'class' => 'has_layout'), 'restore'); //no_layout $img = '<span class="layout_icon"></span>'; echo $this->Link('Admin/Menu', $img . '[layout_label]', 'cmd=layout&index=[key]', ' title="' . $langmessage['layout'] . '" data-cmd="gpabox" class="no_layout"'); echo '</span>'; echo '</div>'; } $this->InsertLinks(); //file stats echo '<div>'; echo '<b>' . $langmessage['Page Info'] . '</b>'; echo '<span>'; echo '<a class="not_multiple">' . $langmessage['Slug/URL'] . ': [title]</a>'; echo '<a class="not_multiple">' . $langmessage['Content Type'] . ': [types]</a>'; echo '<a class="not_special only_multiple">' . sprintf($langmessage['%s Pages'], '[files]') . '</a>'; echo '<a class="not_special">' . $langmessage['File Size'] . ': [size]</a>'; echo '<a class="not_special not_multiple">' . $langmessage['Modified'] . ': [mtime]</a>'; echo '<a class="not_multiple">Data Index: [key]</a>'; echo '</span>'; echo '</div>'; }
/** * Notify the admin if there have been any fatal errors * */ public static function FatalNotices() { global $dataDir, $page; if (!\gp\admin\Tools::HasPermission('Admin_Errors')) { return; } if (is_object($page) && property_exists($page, 'requested') && strpos($page->requested, 'Admin/Errors') !== false) { return; } $dir = $dataDir . '/data/_site'; $files = scandir($dir); $has_fatal = false; foreach ($files as $file) { if (strpos($file, 'fatal_') === false) { continue; } $has_fatal = true; } if (!$has_fatal) { return; } $msg = 'Warning: One or more components have caused fatal errors and have been disabled. ' . \gp\tool::Link('Admin/Errors', 'More Information', '', 'style="white-space:nowrap"') . ' ' . \gp\tool::Link($page->title, 'Clear All Errors', 'cmd=ClearErrors', '', 'ClearErrors'); //cannot be creq msg($msg); }
public static function ShowEditLink($permission = false) { if ($permission) { return !self::$nested_edit && \gp\tool::LoggedIn() && \gp\admin\Tools::HasPermission($permission); } return !self::$nested_edit && \gp\tool::LoggedIn(); }