http://www.mediawiki.org/wiki/Special:Code/MediaWiki/96129

Revision: 96129
Author:   preilly
Date:     2011-09-02 17:20:29 +0000 (Fri, 02 Sep 2011)
Log Message:
-----------
fix for bug 30551 - Create a simple feedback option for mobile users

Modified Paths:
--------------
    trunk/extensions/MobileFrontend/MobileFrontend.php
    trunk/extensions/MobileFrontend/views/layout/_footmenu_default.html.php

Added Paths:
-----------
    trunk/extensions/MobileFrontend/views/information/leave_feedback.html.php

Modified: trunk/extensions/MobileFrontend/MobileFrontend.php
===================================================================
--- trunk/extensions/MobileFrontend/MobileFrontend.php  2011-09-02 17:11:23 UTC 
(rev 96128)
+++ trunk/extensions/MobileFrontend/MobileFrontend.php  2011-09-02 17:20:29 UTC 
(rev 96129)
@@ -65,7 +65,7 @@
 );
 
 class ExtMobileFrontend {
-       const VERSION = '0.5.51';
+       const VERSION = '0.5.52';
 
        /**
         * @var DOMDocument
@@ -132,6 +132,14 @@
                'mobile-frontend-enable-images',
                'mobile-frontend-featured-article',
                'mobile-frontend-news-items',
+               'mobile-frontend-leave-feedback-title',
+               'mobile-frontend-leave-feedback-notice',
+               'mobile-frontend-leave-feedback-subject',
+               'mobile-frontend-leave-feedback-message',
+               'mobile-frontend-leave-feedback-cancel',
+               'mobile-frontend-leave-feedback-submit',
+               'mobile-frontend-leave-feedback-link-text',
+               'mobile-frontend-leave-feedback',
        );
 
        public $itemsToRemove = array(
@@ -316,7 +324,29 @@
                if ( self::$useFormat === 'mobile-wap' ) {
                        $this->contentFormat = 'WML';
                }
+               
+               if ( $mobileAction == 'leave_feedback' ) {
+                       echo $this->renderLeaveFeedbackXHTML();
+                       wfProfileOut( __METHOD__ );
+                       exit();
+               }
 
+               if ( $mobileAction == 'leave_feedback_post' ) {
+                       
+                       $subject = htmlspecialchars( $wgRequest->getText( 
'subject', '' ) );
+                       $message = htmlspecialchars( $wgRequest->getText( 
'message', '' ) );
+                       
+                       $title = Title::newFromText( 'MobileFrontend Extension 
Feedback' );
+                       $article = new Article( $title ); 
+                       $rawtext = $article->getRawText();
+                       $rawtext .= "\n== {$subject} == \n {$message} ~~~~ \n 
<small>User agent: {$userAgent}</small> ";
+                       $article->doEdit( $rawtext, '' );
+                       $location = str_replace( 
'&mobileaction=leave_feedback_post', '', $wgRequest->getFullRequestURL() );
+                       $wgRequest->response()->header( 'Location: ' . 
$location );
+                       wfProfileOut( __METHOD__ );
+                       exit();
+               }
+
                if ( $mobileAction == 'disable_mobile_site' ) {
                        if ( $this->contentFormat == 'XHTML' ) {
                                echo $this->renderDisableMobileSiteXHTML();
@@ -437,6 +467,33 @@
                }
                wfProfileOut( __METHOD__ );
        }
+       
+       private function renderLeaveFeedbackXHTML() {
+               global $wgRequest;
+               wfProfileIn( __METHOD__ );
+               if ( $this->contentFormat == 'XHTML' ) {
+                       $this->getMsg();
+                       
+                       $title = 
self::$messages['mobile-frontend-leave-feedback-title'];
+                       $notice = 
self::$messages['mobile-frontend-leave-feedback-notice'];
+                       $linkText = 
self::$messages['mobile-frontend-leave-feedback-link-text'];
+                       $subject = 
self::$messages['mobile-frontend-leave-feedback-subject'];
+                       $message = 
self::$messages['mobile-frontend-leave-feedback-message'];
+                       $cancel = 
self::$messages['mobile-frontend-leave-feedback-cancel'];
+                       $submit = 
self::$messages['mobile-frontend-leave-feedback-submit'];
+                       
+                       $feedbackPostURL = str_replace( 
'&mobileaction=leave_feedback', '', $wgRequest->getFullRequestURL() ) . 
'&mobileaction=leave_feedback_post';
+                       require( 'views/layout/_search_webkit.html.php' );
+                       require( 'views/layout/_footmenu_default.html.php' );
+                       require( 'views/information/leave_feedback.html.php' );
+                       $contentHtml = $leaveFeedbackHtml;
+                       require( 'views/layout/application.html.php' );
+                       wfProfileOut( __METHOD__ );
+                       return $applicationHtml;
+               }
+               wfProfileOut( __METHOD__ );
+               return '';
+       }
 
        private function renderOptInMobileSiteXHTML() {
                wfProfileIn( __METHOD__ );

Added: trunk/extensions/MobileFrontend/views/information/leave_feedback.html.php
===================================================================
--- trunk/extensions/MobileFrontend/views/information/leave_feedback.html.php   
                        (rev 0)
+++ trunk/extensions/MobileFrontend/views/information/leave_feedback.html.php   
2011-09-02 17:20:29 UTC (rev 96129)
@@ -0,0 +1,27 @@
+<?php
+
+$scriptUrl = wfScript();
+
+$leaveFeedbackHtml = <<<EOT
+<form action='{$feedbackPostURL}' method='post'>
+<div tabindex="-1">
+       <div unselectable="on">
+               <span unselectable="on"><p>{$title}</p></span>
+       </div>
+       <div>
+               <div>
+                       <div><p><small>{$notice} "<a 
href="{$scriptUrl}?title=MobileFrontend_Extension_Feedback" 
target="_blank">{$linkText}</a>"</small>
+                       </p></div>
+                       <div><p>{$subject}:<br><input type="text" 
name="subject" maxlength="60" style="width:40%;"></p>
+                       </div>
+                       <div><p>{$message}:<br><textarea name="message" 
style="width:40%;" rows="5" cols="60"></textarea></p>
+                       </div>
+               </div>
+       </div>
+       <div><button onClick="javascript:history.back();" 
type="button"><span>{$cancel}</span></button>
+       <input type="submit" value="{$submit}"></input>
+       </div>
+</div>
+</form>
+
+EOT;


Property changes on: 
trunk/extensions/MobileFrontend/views/information/leave_feedback.html.php
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: 
trunk/extensions/MobileFrontend/views/layout/_footmenu_default.html.php
===================================================================
--- trunk/extensions/MobileFrontend/views/layout/_footmenu_default.html.php     
2011-09-02 17:11:23 UTC (rev 96128)
+++ trunk/extensions/MobileFrontend/views/layout/_footmenu_default.html.php     
2011-09-02 17:20:29 UTC (rev 96129)
@@ -5,7 +5,10 @@
 $copyright = self::$messages['mobile-frontend-copyright'];
 $disableImages = self::$messages['mobile-frontend-disable-images'];
 $enableImages = self::$messages['mobile-frontend-enable-images'];
+$leaveFeedback = self::$messages['mobile-frontend-leave-feedback'];
 
+$leaveFeedbackURL = self::$currentURL . '&mobileaction=leave_feedback';
+
 $disableMobileSiteURL = self::$disableMobileSiteURL;
 $viewNormalSiteURL = self::$viewNormalSiteURL;
 
@@ -21,7 +24,7 @@
     <div id='footer'> 
       <div class='nav' id='footmenu'> 
         <div class='mwm-notice'> 
-          <a href="{$viewNormalSiteURL}">{$regularSite}</a> | <a 
href="{$imagesURL}">{$imagesToggle}</a>
+          <a href="{$viewNormalSiteURL}">{$regularSite}</a> | <a 
href="{$imagesURL}">{$imagesToggle}</a> | <a 
href="{$leaveFeedbackURL}">{$leaveFeedback}</a>
             <div id="perm"> 
               <a href="{$disableMobileSiteURL}">{$permStopRedirect}</a> 
             </div> 


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to