コード例 #1
0
ファイル: Drafts.hooks.php プロジェクト: ErdemA/wikihow
 /**
  * EditPage::showEditForm:initial hook
  * Load draft...
  */
 public static function loadForm(&$editpage)
 {
     global $wgUser, $wgRequest, $wgOut, $wgTitle, $wgLang;
     if (!wfRunHooks("ShouldUseDrafts", array())) {
         return true;
     }
     // Check permissions
     //XXCHANGED
     $adv = $editpage->mGuided == true ? "" : "&advanced=true";
     $wgRequest->setVal("guidededitor", $editpage->mGuided);
     if ($wgUser->isAllowed('edit') && $wgUser->isLoggedIn()) {
         // Get draft
         $draft = Draft::newFromID($wgRequest->getIntOrNull('draft'));
         // Load form values
         if ($draft->exists()) {
             // Override initial values in the form with draft data
             $editpage->textbox1 = $draft->getText();
             $editpage->summary = $draft->getSummary();
             $editpage->scrolltop = $draft->getScrollTop();
             $editpage->minoredit = $draft->getMinorEdit() ? true : false;
         }
         // Save draft on non-save submission
         if ($wgRequest->getVal('action') == 'submit' && $wgUser->editToken() == $wgRequest->getText('wpEditToken')) {
             // If the draft wasn't specified in the url, try using a form-submitted one
             if (!$draft->exists()) {
                 $draft = Draft::newFromID($wgRequest->getIntOrNull('wpDraftID'));
             }
             // Load draft with info
             $draft->setTitle(Title::newFromText($wgRequest->getText('wpDraftTitle')));
             $draft->setSection($wgRequest->getInt('wpSection'));
             $draft->setStartTime($wgRequest->getText('wpStarttime'));
             $draft->setEditTime($wgRequest->getText('wpEdittime'));
             $draft->setSaveTime(wfTimestampNow());
             $draft->setScrollTop($wgRequest->getInt('wpScrolltop'));
             $draft->setText($wgRequest->getText('wpTextbox1'));
             $draft->setSummary($wgRequest->getText('wpSummary'));
             $draft->setMinorEdit($wgRequest->getInt('wpMinoredit', 0));
             // Save draft
             $draft->save();
             // Use the new draft id
             $wgRequest->setVal('draft', $draft->getID());
         }
     }
     // Internationalization
     wfLoadExtensionMessages('Drafts');
     $numDrafts = Draft::countDrafts($wgTitle);
     // Show list of drafts
     if ($numDrafts > 0) {
         if ($wgRequest->getText('action') !== 'submit') {
             $wgOut->addHTML(Xml::openElement('div', array('id' => 'drafts-list-box', 'class' => 'minor_section')));
             $wgOut->addHTML(Xml::element('h2', null, wfMsg('drafts-view-existing')));
             Draft::ListDrafts($wgTitle);
             $wgOut->addHTML(Xml::closeElement('div'));
         } else {
             $link = Xml::element('a', array('href' => $wgTitle->getFullURL("action=edit" . $adv), 'onclick' => "if( !wgAjaxSaveDraft.insync ) return confirm('" . Xml::escapeJsString(wfMsgHTML('drafts-view-warn')) . "')"), wfMsgExt('drafts-view-notice-link', array('parsemag'), $wgLang->formatNum($numDrafts)));
             $wgOut->addHTML('<div class="minor_section">' . wfMsgHTML('drafts-view-notice', $link) . '</div>');
         }
     }
     // Continue
     return true;
 }