/** * EditPageBeforeEditButtons hook * Add draft saving controls */ public static function controls(&$editpage, &$buttons) { global $wgUser, $wgTitle, $wgRequest, $egDraftsAutoSaveWait; // Check permissions if ($wgUser->isAllowed('edit') && $wgUser->isLoggedIn() && wfRunHooks("ShouldUseDrafts", array())) { // Internationalization wfLoadExtensionMessages('Drafts'); // Build XML $buttons['savedraft'] = Xml::openElement('script', array('type' => 'text/javascript', 'language' => 'javascript')); $buttonAttribs = array('id' => 'wpDraftSave', 'name' => 'wpDraftSave', 'tabindex' => 8, 'value' => wfMsg('drafts-save-save'), 'class' => 'button secondary disabled '); $accesskey = $wgUser->getSkin()->accesskey('drafts-save'); if ($accesskey !== false) { $buttonAttribs['accesskey'] = $accesskey; } $tooltip = $wgUser->getSkin()->titleAttrib('drafts-save', 'withaccess'); if ($tooltip !== false) { $buttonAttribs['title'] = $tooltip; } $ajaxButton = Xml::escapeJsString(Xml::element('input', array('type' => 'button') + $buttonAttribs + ($wgRequest->getText('action') !== 'submit' ? array('disabled' => 'disabled', 'class' => 'disabled') : array()))); $buttons['savedraft'] .= "document.write( '{$ajaxButton}' );"; $buttons['savedraft'] .= Xml::closeElement('script'); $buttons['savedraft'] .= Xml::openElement('noscript'); $buttons['savedraft'] .= Xml::element('input', array('type' => 'submit') + $buttonAttribs); $buttons['savedraft'] .= Xml::closeElement('noscript'); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpDraftAutoSaveWait', 'value' => $egDraftsAutoSaveWait)); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpDraftToken', 'value' => Draft::newToken())); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpDraftID', 'value' => $wgRequest->getInt('draft', ''))); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpDraftTitle', 'value' => $wgTitle->getPrefixedText())); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpMsgSaved', 'value' => wfMsg('drafts-save-saved'))); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpMsgSaveDraft', 'value' => wfMsg('drafts-save-save'))); $buttons['savedraft'] .= Xml::element('input', array('type' => 'hidden', 'name' => 'wpMsgError', 'value' => wfMsg('drafts-save-error'))); } // Continue return true; }