MCMS
[ class tree: MCMS ] [ index: MCMS ] [ all elements ]

Source for file AdminEditArticle.php

Documentation is available at AdminEditArticle.php

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4: */
  3. // +----------------------------------------------------------------------+
  4. // | MCMS: a PHP Content Management System for creating accessible sites. |
  5. // | Copyright (C) 2005  Silvio Moioli                                    |
  6. // |                                                                      |
  7. // | This program is free software; you can redistribute it and/or modify |
  8. // | it under the terms of the GNU General Public License as published by |
  9. // | the Free Software Foundation; either version 2 of the License, or    |
  10. // | (at your option) any later version.                                  |
  11. // |                                                                      |
  12. // | This program is distributed in the hope that it will be useful,      |
  13. // | but WITHOUT ANY WARRANTY; without even the implied warranty of       |
  14. // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        |
  15. // | GNU General Public License for more details.                         |
  16. // |                                                                      |
  17. // | You should have received a copy of the GNU General Public License    |
  18. // | along with this program; if not, write to the Free Software          |
  19. // | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 |
  20. // +----------------------------------------------------------------------+
  21. // | Authors: Silvio Moioli <silvio at moioli dot net> www.moioli.net     |
  22. // +----------------------------------------------------------------------+
  23. //
  24. //$Id:
  25.  
  26. /** Importa la classe di base per l"interfaccia utente (autore) */
  27. require_once $_SERVER["DOCUMENT_ROOT"]."/admin/lib/view/AdminPage.php";
  28. /** Importa la libreria per semplificare l"aggiunta di tag XML */
  29. require_once $_SERVER["DOCUMENT_ROOT"]."/admin/lib/view/Tagger.php";
  30.  
  31. /**
  32.  * Rappresenta la pagina di aggiunta/modifica di un articolo.
  33.  * Presenta una finestra per l'input dell'XHTML.
  34.  * 
  35.  * @package  MCMS
  36.  * @version  2
  37.  * @author   Silvio Moioli <silvio at moioli dot net>
  38.  */
  39. class AdminEditArticle extends AdminPage
  40. {
  41.     /** @var Author l'autore che accede a questa pagina */
  42.     var $author = null;
  43.     /** @var Site il sito a cui appartiene l'articolo da modificare o aggiungere */
  44.     var $site = null;
  45.     /** @var Article l'articolo da modificare, null se è un nuovo articolo */
  46.     var $article = null;
  47.     /** @var string "new" se si aggiunge un nuovo articolo "edit" altrimenti */
  48.     var $mode = "new";
  49.     /** @var bool true se Javascript è in uso per la modifica dell'XHTML */
  50.     var $javascript = true;
  51.     
  52.     /** @var string titolo proposto all'utente per questo articolo */
  53.     var $defaultTitle = "Nuovo articolo";
  54.     /** @var string parole chiave proposte all'utente per questo articolo */
  55.     var $defaultKeywords = "parole chiave";
  56.     /** @var string descrizione proposta all'utente per questo articolo */
  57.     var $defaultDescription = "descrizione";
  58.     /** @var string contenuti (XHTML) proposti all'utente per questo articolo */
  59.     var $defaultContents = "Inserisci i tuoi contenuti <b>qui</b>.";
  60.     /** @var array articoli correlati proposti all'utente per questo articolo */
  61.     var $defaultCorrelatedArticles = array();
  62.     /** @var Category sezione a cui l'articolo appartiene */
  63.     var $defaultCategory = null;
  64.     
  65.     /**
  66.      * Costruttore standard.
  67.      *
  68.      * @see AdminPage
  69.      * @param Author $author l'autore del nuovo articolo o dell'articolo
  70.      *  da modificare
  71.      * @param Site $site il sito a cui il nuovo articolo o l'articolo da
  72.      *  modificare appartiene
  73.      * @param Article $article l'articolo da modificare o null
  74.      * @param string $mode "new" o "edit" a seconda che si voglia creare
  75.      *  un nuovo articolo o modificarne uno esistente
  76.      * @param bool $javascript indica la possibilità di usare il JavaScript
  77.      *  per l'editor XHTML
  78.      */
  79.     function AdminEditArticle($author$site$article$mode$javascript{
  80.         parent::AdminPage();
  81.         $this->author=$author;    
  82.         $this->site=$site;
  83.         $this->article=$article;
  84.         $this->mode=$mode;
  85.         $this->javascript=$javascript;
  86.         
  87.         $categories $this->site->getCategories();
  88.         $this->defaultCategory = $categories[0];
  89.         if ($mode == "edit"{
  90.             $this->defaultTitle = $article->getTitle();
  91.             $this->defaultKeywords = $article->getKeywords();
  92.             $this->defaultDescription = $article->getDescription();
  93.             $this->defaultContents = $article->getContents();
  94.             $this->defaultCorrelatedArticles = $article->getCorrelatedArticles();
  95.             $this->defaultCategory = $article->getCategory();
  96.         }
  97.     }
  98.     
  99.     /**
  100.      * Cambia il titolo proposto all'utente per questo articolo
  101.      *
  102.      * @param string $defaultTitle il nuovo titolo
  103.      */
  104.     function setDefaultTitle($defaultTitle){
  105.         $this->defaultTitle = $defaultTitle;
  106.     }
  107.     
  108.     /**
  109.      * Cambia le parole chiave proposte all'utente per questo articolo
  110.      *
  111.      * @param string $defaultKeywords le nuove parole chiave
  112.      */
  113.     function setDefaultKeywords($defaultKeywords){
  114.         $this->defaultKeywords = $defaultKeywords;
  115.     }
  116.     
  117.     /**
  118.      * Cambia la descrizione proposta all'utente per questo articolo
  119.      *
  120.      * @param string $defaultDescription la nuova descrizione
  121.      */
  122.     function setDefaultDescription($defaultDescription){
  123.         $this->defaultDescription = $defaultDescription;
  124.     }
  125.     
  126.     /**
  127.      * Cambia i contenuti (XHTML) proposti all'utente per questo articolo
  128.      *
  129.      * @param string $defaultContents i nuovi contenuti
  130.      */
  131.     function setDefaultContents($defaultContents){
  132.         $this->defaultContents = $defaultContents;
  133.     }
  134.     
  135.     /**
  136.      * Cambia gli articoli correlati proposti all'utente per questo articolo
  137.      *
  138.      * @param array $defaultCorrelatedArticles i nuovi articoli correlati
  139.      */
  140.     function setDefaultCorrelatedArticles($defaultCorrelatedArticles){
  141.         $this->defaultCorrelatedArticles = $defaultCorrelatedArticles;
  142.     }
  143.  
  144.     /**
  145.      * Cambia la sezione a cui l'articolo appartiene
  146.      *
  147.      * @param array $defaultCategory la nuova sezione
  148.      */
  149.     function setDefaultCategory($defaultCategory){
  150.         $this->defaultCategory = $defaultCategory;
  151.     }
  152.     
  153.     /**
  154.      * Ritorna il titolo (in XHTML) di questa pagina.
  155.      *
  156.      * @return string una stringa XHTML rappresentante il titolo della pagina
  157.      * @see Compilable
  158.      */
  159.     function getTitle()
  160.     {
  161.         $authorID $this->author->getID();
  162.         $siteID $this->site->getID();
  163.         $title a("do.php?goTo=AdminMain&amp;authorID=$authorID",
  164.             "Il Progettista")." > ".
  165.             a("do.php?goTo=AdminManageSite&amp;authorID=$authorID&amp;".
  166.             "siteID=$siteID"$this->site->getShortURL())." > ".
  167.             a("do.php?goTo=AdminListArticles&amp;authorID=$authorID&amp;".
  168.             "siteID=$siteID","Articoli")." > ".$this->defaultTitle;
  169.         return $title;
  170.     }
  171.     
  172.     /**
  173.      * Ritorna un array di stringhe XHTML relative al menu (barra di navigazione)
  174.      * di questa pagina.
  175.      *
  176.      * @return array vettore di stringhe XHTML rappresentante il menu della pagina
  177.      * @see Compilable
  178.      */
  179.     function getMenuEntries()
  180.     {
  181.         $authorID $this->author->getID();
  182.         $siteID $this->site->getID();
  183.         $menuEntries array(p(a("do.php?goTo=AdminManageSite&amp;".
  184.             "siteID=$siteID&amp;authorID=$authorID",
  185.             "Annulla e torna alla gestione del sito").br().
  186.             a("do.php?goTo=AdminListArticles&amp;siteID=$siteID&amp;".
  187.             "authorID=$authorID","Annulla e torna alla gestione degli articoli")));
  188.         return $menuEntries;
  189.     }
  190.     
  191.     /**
  192.      * Ritorna il contenuto (XHTML) del corpo di questa pagina.
  193.      *
  194.      * @return string la stringa XHTML rappresentante il corpo della pagina
  195.      * @see Compilable
  196.      */
  197.     function getContents()
  198.     {
  199.         $authorID $this->author->getID();
  200.         $siteID $this->site->getID();
  201.         
  202.         $action "";
  203.         $articleID 0;
  204.         $articleCategory null;
  205.         if ($this->mode == "new"{
  206.             $action "addArticle";
  207.         }
  208.         elseif ($this->mode == "edit"{
  209.             $action "editArticle";
  210.             $articleID $this->article->getID();
  211.         }
  212.         
  213.         $contents h1("Contenuti dell&#039;articolo").
  214.             p("Da questa pagina puoi gestire i contenuti effettivi dell&#039;
  215.             articolo.").
  216.             form("do.php?action=$action&amp;authorID=$authorID&amp;siteID=$siteID".
  217.             "&amp;articleID=$articleID&amp;goTo=AdminListArticles&amp;mode=$this->mode",
  218.             "POST",
  219.             
  220.             p("Titolo dell&#039;articolo: ".input("text","title",$this->defaultTitle).
  221.             br().
  222.             
  223.             "Parole-chiave dell&#039;articolo: ".
  224.             input("text","keywords",$this->defaultKeywords).br().
  225.             
  226.             "Breve descrizione dell&#039;articolo: ".
  227.             input("text""description",$this->defaultDescription).br().
  228.             
  229.             "Contenuti dell&#039;articolo:".br().
  230.             HTMLEditor($this->defaultContents$this->javascript).br().
  231.             
  232.             "Articoli correlati a questo articolo:".br().
  233.             $this->checkboxes().br().
  234.             
  235.             "Sezione a cui questo articolo appartiene: ".br().
  236.             $this->combobox($this->defaultCategory).br().
  237.             
  238.             "Quando hai finito, clicca sul bottone qui sotto:".br().
  239.             submit()
  240.             ));
  241.         return $contents;
  242.     }
  243.   
  244.     /**
  245.      * Ritorna il codice XHTML delle checkbox per la correlazione degli articoli
  246.      *
  247.      * @access private
  248.      * @return string la stringa XHTML rappresentante le checkbox
  249.      */
  250.     function checkboxes()
  251.     {
  252.         $allArticles $this->site->getArticles();
  253.         $listElements array();
  254.         $count 0;
  255.         $correlatedArticleIDs array();            
  256.         foreach ($this->defaultCorrelatedArticles as $i{
  257.             $correlatedArticleIDs[$i->getID();
  258.         }
  259.         foreach ($allArticles as $i{
  260.             if ($this->mode=="new" || $i->getID(!= $this->article->getID()) {
  261.                 $articleID $i->getID();
  262.                 $listElements []checkbox("article$count"in_array($articleID$correlatedArticleIDs)).
  263.                 $i->getTitle().input("hidden""article$count"."ID",$articleID);               
  264.                 $count++;
  265.             }
  266.         }
  267.         return unorderedList($listElements);
  268.     }
  269.     
  270.     /**
  271.      * Ritorna il codice XHTML della select per la scelta della sezione
  272.      * a cui l'articolo appartiene
  273.      *
  274.      * @access private
  275.      * @param Category $category la sezione di default dell'articolo
  276.      * @return string la stringa XHTML rappresentante la select
  277.      */
  278.     function combobox($category)
  279.     {
  280.         $selectContents "";
  281.         foreach ($this->site->getCategories(as $i{
  282.             $selectContents .= option($i->getID()$i->getID(== $category->getID(),
  283.                 $i->getName());
  284.         }
  285.         
  286.         return select("categoryID"$selectContents);
  287.     }
  288. }
  289. ?>

Documentation generated on Wed, 26 Jul 2006 21:44:39 +0200 by phpDocumentor 1.3.0RC6