-/**
+/*!
* mediawiki.feedback
*
* @author Ryan Kaldari, 2010
* @author Neil Kandalgaonkar, 2010-11
* @since 1.19
- *
- * This is a way of getting simple feedback from users. It's useful
- * for testing new features -- users can give you feedback without
- * the difficulty of opening a whole new talk page. For this reason,
- * it also tends to collect a wider range of both positive and negative
- * comments. However you do need to tend to the feedback page. It will
- * get long relatively quickly, and you often get multiple messages
- * reporting the same issue.
- *
- * It takes the form of thing on your page which, when clicked, opens a small
- * dialog box. Submitting that dialog box appends its contents to a
- * wiki page that you specify, as a new section.
- *
- * Not compatible with LiquidThreads.
- *
- * Minimal example in how to use it:
- *
- * var feedback = new mw.Feedback();
- * $( '#myButton' ).click( function () { feedback.launch(); } );
- *
- * You can also launch the feedback form with a prefilled subject and body.
- * See the docs for the launch() method.
*/
( function ( mw, $ ) {
/**
- * Thingy for collecting user feedback on a wiki page
- * @param {Array} options -- optional, all properties optional.
- * api: {mw.Api} if omitted, will just create a standard API
- * title: {mw.Title} the title of the page where you collect feedback. Defaults to "Feedback".
- * dialogTitleMessageKey: {String} message key for the title of the dialog box
- * bugsLink: {mw.Uri|String} url where bugs can be posted
- * bugsListLink: {mw.Uri|String} url where bugs can be listed
+ * This is a way of getting simple feedback from users. It's useful
+ * for testing new features -- users can give you feedback without
+ * the difficulty of opening a whole new talk page. For this reason,
+ * it also tends to collect a wider range of both positive and negative
+ * comments. However you do need to tend to the feedback page. It will
+ * get long relatively quickly, and you often get multiple messages
+ * reporting the same issue.
+ *
+ * It takes the form of thing on your page which, when clicked, opens a small
+ * dialog box. Submitting that dialog box appends its contents to a
+ * wiki page that you specify, as a new section.
+ *
+ * Not compatible with LiquidThreads.
+ *
+ * Minimal example in how to use it:
+ *
+ * var feedback = new mw.Feedback();
+ * $( '#myButton' ).click( function () { feedback.launch(); } );
+ *
+ * You can also launch the feedback form with a prefilled subject and body.
+ * See the docs for the #launch() method.
+ *
+ * @param {Object} [options]
+ * @param {mw.Api} [options.api] if omitted, will just create a standard API
+ * @param {mw.Title} [options.title="Feedback"] The title of the page where you collect
+ * feedback.
+ * @param {string} [options.dialogTitleMessageKey="feedback-submit"] Message key for the
+ * title of the dialog box
+ * @param {string} [options.bugsLink="//bugzilla.wikimedia.org/enter_bug.cgi"] URL where
+ * bugs can be posted
+ * @param {mw.Uri|string} [options.bugsListLink="//bugzilla.wikimedia.org/query.cgi"]
+ * URL where bugs can be listed
*/
mw.Feedback = function ( options ) {
if ( options === undefined ) {
};
mw.Feedback.prototype = {
+ /**
+ * Sets up interface
+ */
setup: function () {
var $feedbackPageLink,
$bugNoteLink,
},
+ /**
+ * Displays a section of the dialog.
+ *
+ * @param {"form"|"bugs"|"submitting"|"thanks"|"error"} s
+ * The section of the dialog to show.
+ */
display: function ( s ) {
this.$dialog.dialog( { buttons:{} } ); // hide the buttons
this.$dialog.find( '.feedback-mode' ).hide(); // hide everything
this.$dialog.find( '.feedback-' + s ).show(); // show the desired div
},
+ /**
+ * Display the submitting section.
+ */
displaySubmitting: function () {
this.display( 'submitting' );
},
+ /**
+ * Display the bugs section.
+ */
displayBugs: function () {
var fb = this,
bugsButtons = {};
} );
},
+ /**
+ * Display the thanks section.
+ */
displayThanks: function () {
var fb = this,
closeButton = {};
/**
* Display the feedback form
- * @param {Object} optional prefilled contents for the feedback form. Object with properties:
- * subject: {String}
- * message: {String}
+ * @param {Object} [contents] Prefilled contents for the feedback form.
+ * @param {string} [contents.subject] The subject of the feedback
+ * @param {string} [contents.message] The content of the feedback
*/
displayForm: function ( contents ) {
var fb = this,
this.$dialog.dialog( { buttons: formButtons } ); // put the buttons back
},
+ /**
+ * Display an error on the form.
+ *
+ * @param {string} message Should be a valid message key.
+ */
displayError: function ( message ) {
var fb = this,
closeButton = {};
this.$dialog.dialog( { buttons: closeButton } );
},
+ /**
+ * Close the feedback form.
+ */
cancel: function () {
this.$dialog.dialog( 'close' );
},
+ /**
+ * Submit the feedback form.
+ */
submit: function () {
var subject, message,
fb = this;
/**
* Modify the display form, and then open it, focusing interface on the subject.
- * @param {Object} optional prefilled contents for the feedback form. Object with properties:
- * subject: {String}
- * message: {String}
+ * @param {Object} [contents] Prefilled contents for the feedback form.
+ * @param {string} [contents.subject] The subject of the feedback
+ * @param {string} [contents.message] The content of the feedback
*/
launch: function ( contents ) {
this.displayForm( contents );