MarkTraceur has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/132785

Change subject: Add method for auto-building forms from TemplateData
......................................................................

Add method for auto-building forms from TemplateData

This won't be a perfect form build, and we'll need to style it for UW, but
it's a start.

Change-Id: Ice23a0bac32fbd380d750daa8ed2535a1df1180b
---
M resources/mw.uw.MediaTemplate.js
1 file changed, 74 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UploadWizard 
refs/changes/85/132785/1

diff --git a/resources/mw.uw.MediaTemplate.js b/resources/mw.uw.MediaTemplate.js
index 1b590e1..3a2ca7e 100644
--- a/resources/mw.uw.MediaTemplate.js
+++ b/resources/mw.uw.MediaTemplate.js
@@ -166,4 +166,78 @@
 
                return valueStrings.join( '|' ) + '}}';
        };
+
+       /**
+        * Builds a form for this template.
+        * @returns {jQuery}
+        */
+       mw.uw.MediaTemplate.prototype.buildForm = function () {
+               var i, param, type, $input, $label,
+                       paramNames = Object.keys( this.params ),
+                       $form = $( '<form>' )
+                               .prop( 'action', 'javascript:void(0)' )
+                               .addClass( 'templatedata-auto-built-form' );
+
+               function canUseInputType( itype ) {
+                       var testInput = document.createElement( 'input' );
+                       testInput.setAttribute( 'type', 'range' );
+
+                       return testInput.type !== 'text';
+               }
+
+               for ( i = 0; i < paramNames.length; i++ ) {
+                       param = this.params[paramNames[i]];
+
+                       $label = $( '<label>' )
+                               .addClass( 'templatedata-label' )
+                               .text( param.label )
+                               .appendTo( $form );
+
+                       switch ( param.type ) {
+                               case 'boolean':
+                                       type = 'check';
+                                       break;
+
+                               case 'date':
+                                       if ( canUseInputType( 'date' ) ) {
+                                               type = 'date';
+                                       } else {
+                                               type = 'text';
+                                       }
+
+                                       break;
+
+                               case 'content':
+                               case 'unbalanced-wikitext':
+                               case 'string':
+                                       type = 'textarea';
+                                       break;
+
+                               case 'wiki-page-name':
+                               case 'wiki-file-name':
+                               case 'wiki-user-name':
+                               case 'number':
+                               case 'line':
+                               default:
+                                       type = 'text';
+                                       break;
+                       }
+
+                       if ( type === 'textarea' ) {
+                               $input = $( '<textarea>' );
+                       } else {
+                               $input = $( '<input type="' + type + '" />' );
+                       }
+
+                       $input
+                               .prop( 'name', paramNames[i] )
+                               .addClass( 'templatedata-type-' + param.type )
+                               .toggleClass( 'templatedata-required', 
param.required )
+                               .toggleClass( 'templatedata-suggested', 
param.suggested )
+                               .toggleClass( 'templatedata-deprecated', 
param.deprecated )
+                               .appendTo( $label );
+               }
+
+               return $form;
+       };
 }( mediaWiki, jQuery ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/132785
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ice23a0bac32fbd380d750daa8ed2535a1df1180b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UploadWizard
Gerrit-Branch: master
Gerrit-Owner: MarkTraceur <mtrac...@member.fsf.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to