summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'SemanticForms/includes/forminputs/SF_FormInput.php')
-rw-r--r--SemanticForms/includes/forminputs/SF_FormInput.php353
1 files changed, 0 insertions, 353 deletions
diff --git a/SemanticForms/includes/forminputs/SF_FormInput.php b/SemanticForms/includes/forminputs/SF_FormInput.php
deleted file mode 100644
index 13b2db80..00000000
--- a/SemanticForms/includes/forminputs/SF_FormInput.php
+++ /dev/null
@@ -1,353 +0,0 @@
-<?php
-/**
- * File holding the SFFormInput class.
- *
- * The predecessor of this file held several subclasses of SFFormInput. The
- * authors can not be sorted out with certainty anymore, thus are all listed
- * here.
- *
- * @author Yaron Koren
- * @author Jeffrey Stuckman
- * @author Matt Williamson
- * @author Patrick Nagel
- * @author Sanyam Goyal
- * @author Stephan Gambke
- * @file
- * @ingroup SF
- */
-
-/**
- * Parent class for all form input classes.
- * @ingroup SFFormInput
- */
-abstract class SFFormInput {
-
- protected $mInputNumber;
- protected $mCurrentValue;
- protected $mInputName;
- protected $mIsMandatory; // @deprecated, check for array_key_exists('mandatory', $this->mOtherArgs) instead
- protected $mIsDisabled;
- protected $mOtherArgs;
-
- protected $mJsInitFunctionData = array();
- protected $mJsValidationFunctionData = array();
-
- /**
- * Constructor for the SFFormInput class.
- *
- * @param String $input_number
- * The number of the input in the form. For a simple HTML input element
- * this should end up in the id attribute in the format 'input_<number>'.
- * @param String $cur_value
- * The current value of the input field. For a simple HTML input
- * element this should end up in the value attribute.
- * @param String $input_name
- * The name of the input. For a simple HTML input element this should
- * end up in the name attribute.
- * @param Array $other_args
- * An associative array of other parameters that were present in the
- * input definition.
- */
- public function __construct( $input_number, $cur_value, $input_name, $disabled, $other_args ) {
- $this->mInputNumber = $input_number;
- $this->mCurrentValue = $cur_value;
- $this->mInputName = $input_name;
- $this->mOtherArgs = $other_args;
- $this->mIsDisabled = $disabled;
- $this->mIsMandatory = array_key_exists( 'mandatory', $other_args );
- }
-
- /**
- * Returns the name of the input type this class handles.
- *
- * This is the name to be used in the field definition for the "input type"
- * parameter.
- *
- * @return String The name of the input type this class handles.
- * @fixme Should be declared abstract. Static functions cannot be abstract.
- * Do we need this method at all? The name should be set outside this class
- * when the input type is registered.
- */
- public static function getName() {
- return null;
- }
-
- /**
- * Returns the set of SMW property types which this input can
- * handle. See SMW's SMW_DataValueFactory.php
- *
- * @return Array of Strings
- */
- public static function getHandledPropertyTypes() {
- return null;
- }
-
- /**
- * Returns the set of parameters for this form input.
- */
- public static function getParameters() {
- $params = array();
- $params['mandatory'] = array(
- 'name' => 'mandatory',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_mandatory' )->text()
- );
- $params['restricted'] = array(
- 'name' => 'restricted',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_restricted' )->text()
- );
- $params['class'] = array(
- 'name' => 'class',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_class' )->text()
- );
- $params['property'] = array(
- 'name' => 'property',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_property' )->text()
- );
- $params['default'] = array(
- 'name' => 'default',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_default' )->text()
- );
- return $params;
- }
-
- /**
- * Return an array of the default parameters for this input where the
- * parameter name is the key while the parameter value is the value.
- *
- * @return Array of Strings
- */
- public function getDefaultParameters() {
- return null;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- *
- * Ideally this HTML code should provide a basic functionality even if the
- * browser is not JavaScript capable. I.e. even without JavaScript the user
- * should be able to input values.
- *
- * This function is not used yet.
- */
- public function getHtmlText() {
- return null;
- }
-
- /**
- *
- * @return Boolean True, if this input type can handle lists
- */
- public static function canHandleLists() {
- return false;
- }
-
- /**
- * Returns the name and parameters for the initialization JavaScript
- * function for this input type, if any.
- *
- * This function is not used yet.
- */
- public function getJsInitFunctionData() {
- return $this->mJsInitFunctionData;
- }
-
- /**
- * Returns the name and parameters for the validation JavaScript
- * functions for this input type, if any.
- *
- * This function is not used yet.
- */
- public function getJsValidationFunctionData() {
- return $this->mJsValidationFunctionData;
- }
-
-
- /**
- * Returns the names of the resource modules this input type uses.
- *
- * Returns the names of the modules as an array or - if there is only one
- * module - as a string.
- *
- * @return null|string|array
- */
- public function getResourceModuleNames() {
- return null;
- }
-
- /**
- * For each input type one or more JavaScript initialization functions may
- * be specified.
- *
- * <b>This function is not used yet.</b>
- *
- * They are called to initialize the input after the page html has loaded
- * (or for "multiple" templates after the page fragment has loaded).
- *
- * The JavaScript function specified here must be in the top level scope of
- * the document. When it is called it will get the input's id attribute as
- * the first parameter and the specified param as the second.
- *
- *
- * Examples:
- *
- * Adding initFoo like this: <code>addJsInitFunctionData( "initFoo", "'bar'" );</code> will result in this JavaScript call: <code>initFoo( inputID, 'bar' );</code>.
- *
- * Adding initFoo like this: <code>addJsInitFunctionData( "initFoo", "array('bar', 'baz'" );</code> will result in this JavaScript call: <code>initFoo( inputID, array('bar', 'baz') );</code>.
- *
- *
- * @param String $name The name of the initialization function.
- * @param String $param The parameter passed to the initialization function.
- */
- public function addJsInitFunctionData( $name, $param = 'null' ) {
- $this->mJsInitFunctionData[] = array( 'name' => $name, 'param' => $param );
- }
-
- /**
- * For each input type one or more JavaScript validation functions may
- * be specified.
- *
- * <b>Not used yet.</b>
- *
- * They are called to validate the input before the form is submitted for
- * saving or preview.
- *
- * The JavaScript function specified here must be in the top level scope of
- * the document. When it is called it will get the input's id attribute as
- * the first parameter and the specified param as the second.
- *
- *
- * Examples:
- *
- * Adding validateFoo like this: <code>addJsValidationFunctionData( "initFoo", "'bar'" );</code> will result in this JavaScript call: <code>validateFoo( inputID, 'bar' );</code>.
- *
- * Adding validateFoo like this: <code>addJsValidationFunctionData( "initFoo", "array('bar', 'baz'" );</code> will result in this JavaScript call: <code>validateFoo( inputID, array('bar', 'baz') );</code>.
- *
- *
- * @param String $name The name of the initialization function.
- * @param String $param The parameter passed to the initialization function.
- */
- public function addJsValidationFunctionData( $name, $param = 'null' ) {
- $this->mJsValidationFunctionData[] = array( 'name' => $name, 'param' => $param );
- }
-
- /**
- * Returns the set of SMW property types for which this input is
- * meant to be the default one - ideally, no more than one input
- * should declare itself the default for any specific type.
- *
- * @deprecated
- * @return Array of arrays (key is the property type, value is an array of
- * default args to be used for this input)
- */
- public static function getDefaultPropTypes() {
- return array();
- }
-
- /**
- * Returns the set of SMW property types for which this input is
- * meant to be the default one - ideally, no more than one input
- * should declare itself the default for any specific type.
- *
- * @deprecated
- * @return Array of arrays (key is the property type, value is an array of
- * default args to be used for this input)
- */
- public static function getDefaultPropTypeLists() {
- return array();
- }
-
- /**
- * Returns the set of SMW property types which this input can
- * handle, but for which it isn't the default input.
- *
- * @deprecated
- * @return Array of strings
- */
- public static function getOtherPropTypesHandled() {
- return array();
- }
-
- /**
- * Returns the set of SMW property types which this input can
- * handle, but for which it isn't the default input.
- *
- * @deprecated
- * @return Array of strings
- */
- public static function getOtherPropTypeListsHandled() {
- return array();
- }
-
- /**
- * Method to make new style input types compatible with old-style call from
- * the SF parser.
- *
- * @deprecated Do not use/override this in new input type classes
- *
- * TODO: remove/refactor once SF uses forminput objects properly
- */
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
-
- global $sfgFieldNum, $wgParser;
-
- // create an input of the called class
- // TODO: get_called_class was introduced in PHP 5.3. The use of the
- // backtrace should be removed once support for PHP 5.2 is dropped.
- if ( function_exists('get_called_class') ) {
- $calledClass = get_called_class();
- } else {
- if ( $input_name === 'sf_free_text' ) { // free text
- $calledClass = 'SFTextAreaInput';
- } else {
- $bt = debug_backtrace(false);
- $calledClass = $bt[1]['args'][0][0];
- }
- }
-
- $input = new $calledClass ( $sfgFieldNum, $cur_value, $input_name, $is_disabled, $other_args );
-
- $output = $wgParser->getOutput();
- $modules = $input->getResourceModuleNames();
-
- // register modules for the input
- if ( $modules !== null ) {
- $output->addModuleStyles( $modules );
- $output->addModuleScripts( $modules );
- }
-
- // create calls to JS initialization and validation
- // TODO: This data should be transferred as a JSON blob and then be evaluated from a dedicated JS file
- if ( $input->getJsInitFunctionData() || $input->getJsValidationFunctionData() ) {
-
- $jstext = '';
- $input_id = $input_name == 'sf_free_text' ? 'sf_free_text' : "input_$sfgFieldNum";
-
- foreach ( $input->getJsInitFunctionData() as $jsInitFunctionData ) {
- $jstext .= "jQuery('#$input_id').SemanticForms_registerInputInit({$jsInitFunctionData['name']}, {$jsInitFunctionData['param']} );";
- }
-
- foreach ( $input->getJsValidationFunctionData() as $jsValidationFunctionData ) {
- $jstext .= "jQuery('#$input_id').SemanticForms_registerInputValidation( {$jsValidationFunctionData['name']}, {$jsValidationFunctionData['param']});";
- }
-
- if ( $modules !== null ) {
- $jstext = 'mw.loader.using(' . json_encode( $modules )
- . ',function(){' . $jstext
- . '},function(e,module){alert(module+": "+e);});';
- }
-
- $jstext = 'jQuery(function(){' . $jstext . '});';
-
- // write JS code directly to the page's code
- $output->addHeadItem( Html::inlineScript( $jstext ) );
- }
-
- return $input->getHtmlText();
- }
-
-}