X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fdoc.php;h=d897b4e58c5131d452066c57c52a58a456847bd9;hb=d6b28c64830f632bb2f4b6f3c9369b9e56ad217a;hp=f876fb8beb7df2474f7c0a1c43700de9002d431c;hpb=2a426f24c0599710ef170b01f7f7124b7166e12e;p=quix0rs-gnu-social.git diff --git a/actions/doc.php b/actions/doc.php index f876fb8beb..d897b4e58c 100644 --- a/actions/doc.php +++ b/actions/doc.php @@ -1,5 +1,4 @@ . */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} +if (!defined('GNUSOCIAL')) { exit(1); } /** * Documentation class. @@ -43,16 +40,14 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ -class DocAction extends Action +class DocAction extends ManagedAction { var $output = null; var $filename = null; var $title = null; - function prepare($args) + protected function doPreparation() { - parent::prepare($args); - $this->title = $this->trimmed('title'); if (!preg_match('/^[a-zA-Z0-9_-]*$/', $this->title)) { $this->title = 'help'; @@ -60,54 +55,11 @@ class DocAction extends Action $this->output = null; $this->loadDoc(); - return true; - } - - /** - * Handle a request - * - * @param array $args array of arguments - * - * @return nothing - */ - function handle($args) - { - parent::handle($args); - $this->showPage(); - } - - /** - * Page title - * - * Gives the page title of the document. Override default for hAtom entry. - * - * @return void - */ - - function showPageTitle() - { - $this->element('h1', array('class' => 'entry-title'), $this->title()); } - /** - * Block for content. - * - * Overrides default from Action to wrap everything in an hAtom entry. - * - * @return void. - */ - - function showContentBlock() + public function title() { - $this->elementStart('div', array('id' => 'content', 'class' => 'hentry')); - $this->showPageTitle(); - $this->showPageNoticeBlock(); - $this->elementStart('div', array('id' => 'content_inner', - 'class' => 'entry-content')); - // show the actual content (forms, lists, whatever) - $this->showContent(); - $this->elementEnd('div'); - $this->elementEnd('div'); + return ucfirst($this->title); } /** @@ -117,22 +69,14 @@ class DocAction extends Action * * @return void */ - function showContent() { $this->raw($this->output); } - /** - * Page title. - * - * Uses the title of the document. - * - * @return page title - */ - function title() + function showNoticeForm() { - return ucfirst($this->title); + // no notice form } /** @@ -142,8 +86,7 @@ class DocAction extends Action * * @return boolean read-only flag (false) */ - - function isReadOnly($args) + function isReadOnly(array $args=array()) { return true; } @@ -152,78 +95,91 @@ class DocAction extends Action { if (Event::handle('StartLoadDoc', array(&$this->title, &$this->output))) { - $this->filename = $this->getFilename(); + $paths = DocFile::defaultPaths(); - if (empty($this->filename)) { - throw new ClientException(sprintf(_('No such document "%s"'), $this->title), 404); - } + $docfile = DocFile::forTitle($this->title, $paths); - $c = file_get_contents($this->filename); + if (empty($docfile)) { + // TRANS: Client exception thrown when requesting a document from the documentation that does not exist. + // TRANS: %s is the non-existing document. + throw new ClientException(sprintf(_('No such document "%s".'), $this->title), 404); + } - $this->output = common_markup_to_html($c); + $this->output = $docfile->toHTML(); Event::handle('EndLoadDoc', array($this->title, &$this->output)); } } - function getFilename() + function showLocalNav() { - $localDef = null; - $local = null; - - $site = StatusNet::currentSite(); - - if (!empty($site) && file_exists(INSTALLDIR.'/local/doc-src/'.$site.'/'.$this->title)) { - $localDef = INSTALLDIR.'/local/doc-src/'.$site.'/'.$this->title; - - $local = glob(INSTALLDIR.'/local/doc-src/'.$site.'/'.$this->title.'.*'); - if ($local === false) { - // Some systems return false, others array(), if dir didn't exist. - $local = array(); - } - } else { - if (file_exists(INSTALLDIR.'/local/doc-src/'.$this->title)) { - $localDef = INSTALLDIR.'/local/doc-src/'.$this->title; - } - - $local = glob(INSTALLDIR.'/local/doc-src/'.$this->title.'.*'); - if ($local === false) { - $local = array(); - } - } - - if (count($local) || isset($localDef)) { - return $this->negotiateLanguage($local, $localDef); - } - - if (file_exists(INSTALLDIR.'/doc-src/'.$this->title)) { - $distDef = INSTALLDIR.'/doc-src/'.$this->title; - } - - $dist = glob(INSTALLDIR.'/doc-src/'.$this->title.'.*'); - if ($dist === false) { - $dist = array(); - } + $menu = new DocNav($this); + $menu->show(); + } +} - if (count($dist) || isset($distDef)) { - return $this->negotiateLanguage($dist, $distDef); +class DocNav extends Menu +{ + function show() + { + if (Event::handle('StartDocNav', array($this))) { + $stub = new HomeStubNav($this->action); + $this->submenu(_m('MENU','Home'), $stub); + + $docs = new DocListNav($this->action); + $this->submenu(_m('MENU','Docs'), $docs); + + Event::handle('EndDocNav', array($this)); } - - return null; } +} - function negotiateLanguage($filenames, $defaultFilename=null) +class DocListNav extends Menu +{ + function getItems() { - // XXX: do this better - - $langcode = common_language(); - - foreach ($filenames as $filename) { - if (preg_match('/\.'.$langcode.'$/', $filename)) { - return $filename; - } + $items = array(); + + if (Event::handle('StartDocsMenu', array(&$items))) { + + $items = array(array('doc', + array('title' => 'help'), + _m('MENU', 'Help'), + _('Getting started'), + 'nav_doc_help'), + array('doc', + array('title' => 'about'), + _m('MENU', 'About'), + _('About this site'), + 'nav_doc_about'), + array('doc', + array('title' => 'faq'), + _m('MENU', 'FAQ'), + _('Frequently asked questions'), + 'nav_doc_faq'), + array('doc', + array('title' => 'contact'), + _m('MENU', 'Contact'), + _('Contact info'), + 'nav_doc_contact'), + array('doc', + array('title' => 'tags'), + _m('MENU', 'Tags'), + _('Using tags'), + 'nav_doc_tags'), + array('doc', + array('title' => 'groups'), + _m('MENU', 'Groups'), + _('Using groups'), + 'nav_doc_groups'), + array('doc', + array('title' => 'api'), + _m('MENU', 'API'), + _('RESTful API'), + 'nav_doc_api')); + + Event::handle('EndDocsMenu', array(&$items)); } - - return $defaultFilename; + return $items; } }