コード例 #1
0
 public static function userForm(&$items, $opts)
 {
     $opts->consumeValue('users');
     global $wgRequest;
     $default = $wgRequest->getVal('users', '');
     $items['users'] = Xml::inputLabelSep(wfMsg('cleanchanges-users'), 'users', 'mw-users', 40, $default);
     return true;
 }
コード例 #2
0
 /**
  * Create an input to filter changes by categories
  *
  * @param FormOptions $opts
  * @return array
  */
 protected function categoryFilterForm(FormOptions $opts)
 {
     list($label, $input) = Xml::inputLabelSep($this->msg('rc_categories')->text(), 'categories', 'mw-categories', false, $opts['categories']);
     $input .= ' ' . Xml::checkLabel($this->msg('rc_categories_any')->text(), 'categories_any', 'mw-categories_any', $opts['categories_any']);
     return array($label, $input);
 }
	/**
	 * Shortcut for keeping the code at least a bit readable. Adds label and input into $form array.
	 * @param $form \list{String} Array where input element and label is appended.
	 * @param $label \string Label text.
	 * @param $name \string Name attribute.
	 * @param $size \int Size attribute of the input element. Default false.
	 * @param $text \string Text of the value attribute. Default false.
	 * @param $attribs \array Extra attributes. Default empty array.
	 */
	protected function addInputLabel( &$form, $label, $name, $size = false , $text = false, $attribs = array() ) {
		$br = Html::element( 'br' );
		list( $label, $input ) = Xml::inputLabelSep( $label, $name, $name, $size, $text, $attribs );
		$form[] = $label . $br;
		$form[] = $input . $br;
	}
コード例 #4
0
	/**
	 * Returns query form fields.
	 * @param $opts Form options.
	 * @return Array of form fields.
	 */
	protected static function getQueryFormFields( FormOptions $opts ) {
		global $wgWikilogEnableTags;

		$fields = array();

		$fields['wikilog'] = Xml::inputLabelSep(
			wfMsg( 'wikilog-form-wikilog' ), 'wikilog', 'wl-wikilog', 40,
			str_replace( '_', ' ', $opts->consumeValue( 'wikilog' ) )
		);

		$fields['category'] = Xml::inputLabelSep(
			wfMsg( 'wikilog-form-category' ), 'category', 'wl-category', 40,
			str_replace( '_', ' ', $opts->consumeValue( 'category' ) )
		);

		$fields['author'] = Xml::inputLabelSep(
			wfMsg( 'wikilog-form-author' ), 'author', 'wl-author', 40,
			str_replace( '_', ' ', $opts->consumeValue( 'author' ) )
		);

		if ( $wgWikilogEnableTags ) {
			$fields['tag'] = Xml::inputLabelSep(
				wfMsg( 'wikilog-form-tag' ), 'tag', 'wl-tag', 40,
				str_replace( '_', ' ', $opts->consumeValue( 'tag' ) )
			);
		}

		$fields['date'] = array(
			Xml::label( wfMsg( 'wikilog-form-date' ), 'wl-month' ),
			Xml::monthSelector( $opts->consumeValue( 'month' ), '', 'wl-month' ) .
				" " . Xml::input( 'year', 4, $opts->consumeValue( 'year' ), array( 'maxlength' => 4 ) )
		);
		$opts->consumeValue( 'day' );	// ignore day, not really useful

		$statusSelect = new XmlSelect( 'show', 'wl-status', $opts->consumeValue( 'show' ) );
		$statusSelect->addOption( wfMsg( 'wikilog-show-all' ), 'all' );
		$statusSelect->addOption( wfMsg( 'wikilog-show-published' ), 'published' );
		$statusSelect->addOption( wfMsg( 'wikilog-show-drafts' ), 'drafts' );
		$fields['status'] = array(
			Xml::label( wfMsg( 'wikilog-form-status' ), 'wl-status' ),
			$statusSelect->getHTML()
		);

		$fields['submit'] = Xml::submitbutton( wfMsg( 'allpagessubmit' ) );
		return $fields;
	}
コード例 #5
0
ファイル: SMW_QueryUI.php プロジェクト: Tjorriemorrie/app
    /**
     * Generates the forms elements(s) for choosing printouts and sorting
     * options. Use its complement processPoSortFormBox() to decode data
     * sent by these elements.
     *
     * @global boolean $smwgQSortingSupport
     * @global boolean $smwgQRandSortingSupport
     * @global WebRequest $wgRequest
     * @global string $smwgScriptPath
     * @global integer $smwgQPrintoutLimit
     * @param mixed $enableAutocomplete
     * @return string
     */
    protected function getPoSortFormBox($enableAutocomplete = SMWQueryUI::ENABLE_AUTO_SUGGEST)
    {
        global $smwgQSortingSupport, $wgRequest, $smwgScriptPath;
        global $smwgQRandSortingSupport, $smwgQPrintoutLimit;
        SMWOutputs::requireResource('jquery.ui.autocomplete');
        SMWOutputs::requireResource('jquery.ui.dialog');
        SMWOutputs::requireResource('ext.smw.style');
        $result = '<span id="smwposortbox">';
        $params = $this->uiCore->getParameters();
        // mainlabel
        if (is_array($params) && array_key_exists('mainlabel', $params)) {
            $mainLabel = $params['mainlabel'];
        } else {
            $mainLabel = '';
        }
        if ($mainLabel == '-') {
            $mainLabelText = '';
            $formDisplay = 'none';
        } else {
            $mainLabelText = $mainLabel;
            $formDisplay = 'block';
        }
        $result .= Html::openElement('div', array('id' => 'smwmainlabel', 'class' => 'smwsort', 'style' => "display:{$formDisplay};")) . Html::openElement('span', array('class' => 'smwquisortlabel')) . Html::openElement('span', array('class' => 'smw-remove')) . Html::openElement('a', array('href' => 'javascript:smwRemoveMainLabel()')) . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png" alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a>' . '</span><strong>' . wfMessage('smw_qui_rescol')->text() . '</strong></span>' . Xml::openElement('div', array('id' => 'mainlabel-dialog', 'title' => wfMessage('smw_qui_mainlabopts')->text(), 'class' => 'smwmainlabdialog')) . '<table align="center" ><tr>' . '<td>' . wfMessage('smw_qui_dlabel')->text() . '</td>' . '<td><input size="25" value="' . $mainLabelText . '" id="mainlabelvis" /></td>' . '</tr></table>' . '</div>' . '<input type="hidden" name="pmainlabel" value="' . $mainLabel . '" id="mainlabelhid" /> ' . '<a class="smwq-more" href="javascript:smw_makeMainlabelDialog()">' . wfMessage('smw_qui_options')->text() . '</a> ' . '</div>';
        $urlArgs = array();
        $urlArgs['pmainlabel'] = $mainLabel;
        // START: create form elements already submitted earlier via form
        // attempting to load parameters from $wgRequest
        $propertyValues = $wgRequest->getArray('property', array());
        $propertyLabelValues = $wgRequest->getArray('prop_label', array());
        $propertyFormatValues = $wgRequest->getArray('prop_format', array());
        $propertyLimitValues = $wgRequest->getArray('prop_limit', array());
        $orderValues = $wgRequest->getArray('order', array());
        $displayValues = $wgRequest->getArray('display', array());
        $categoryValues = $wgRequest->getArray('category', array());
        $categoryLabelValues = $wgRequest->getArray('cat_label', array());
        $categoryYesValues = $wgRequest->getArray('cat_yes', array());
        $categoryNoValues = $wgRequest->getArray('cat_no', array());
        $mainColumnLabels = $wgRequest->getArray('maincol_label', array());
        $mainLabelCheck = $wgRequest->getCheck('pmainlabel');
        if (!$mainLabelCheck) {
            /*
             * Printouts and sorting might be set via another widget/form/source, so
             * create elements by fetching data from $uiCore. The exact ordering
             * of Ui elements might not be preserved, if the above check were to
             * be removed.
             */
            if (array_key_exists('sort', $params) && array_key_exists('order', $params)) {
                $sortVal = explode(',', trim(strtolower($params['sort'])));
                $orderVal = explode(',', $params['order']);
                reset($sortVal);
                reset($orderVal);
                // give up if sort and order dont have equal number of elements
                if (count($sortVal) !== count($orderVal)) {
                    $orderVal = array();
                    $sortVal = array();
                }
            } else {
                $orderVal = array();
                $sortVal = array();
            }
            $printOuts = $this->uiCore->getPrintOuts();
            $counter = 0;
            foreach ($printOuts as $poValue) {
                if ($poValue->getMode() == SMWPrintRequest::PRINT_CATS) {
                    $categoryValues[$counter] = ' ';
                    $categoryLabelValues[$counter] = $poValue->getLabel();
                    $categoryYesValues[$counter] = '';
                    $categoryNoValues[$counter] = '';
                    $counter++;
                } elseif ($poValue->getMode() == SMWPrintRequest::PRINT_PROP) {
                    $tempProperty = trim(strtolower($poValue->getData()->getText()));
                    $searchKey = array_search($tempProperty, $sortVal);
                    if (!($searchKey === false)) {
                        while ($searchKey != 0) {
                            $propertyValues[$counter] = array_shift($sortVal);
                            $orderValues[$counter] = array_shift($orderVal);
                            $propertyLabelValues[$counter] = '';
                            $propertyFormatValues[$counter] = '';
                            $propertyLimitValues[$counter] = '';
                            $counter++;
                            $searchKey--;
                        }
                        $propertyValues[$counter] = $poValue->getData()->getText();
                        $propertyLabelValues[$counter] = $poValue->getLabel() == $propertyValues[$counter] ? '' : $poValue->getLabel();
                        $propertyFormatValues[$counter] = $poValue->getOutputFormat();
                        $propertyLimitValues[$counter] = $poValue->getParameter('limit') ? $poValue->getParameter('limit') : '';
                        $orderValues[$counter] = $orderVal[0];
                        $displayValues[$counter] = '1';
                        $counter++;
                        array_shift($orderVal);
                        array_shift($sortVal);
                    } else {
                        $propertyValues[$counter] = $poValue->getData()->getText();
                        $propertyLabelValues[$counter] = $poValue->getLabel() == $propertyValues[$counter] ? '' : $poValue->getLabel();
                        $propertyFormatValues[$counter] = $poValue->getOutputFormat();
                        $propertyLimitValues[$counter] = $poValue->getParameter('limit') ? $poValue->getParameter('limit') : '';
                        $displayValues[$counter] = '1';
                        $counter++;
                    }
                } elseif ($poValue->getMode() == SMWPrintRequest::PRINT_THIS) {
                    $mainColumnLabels[$counter] = $poValue->getLabel();
                    $counter++;
                } elseif ($poValue->getMode() == SMWPrintRequest::PRINT_CCAT) {
                    $outputFormat = explode(',', $poValue->getOutputFormat());
                    if (!array_key_exists(1, $outputFormat)) {
                        $outputFormat[1] = '';
                    }
                    $categoryValues[$counter] = $poValue->getData()->getText();
                    $categoryLabelValues[$counter] = $poValue->getLabel();
                    $categoryYesValues[$counter] = $outputFormat[0];
                    $categoryNoValues[$counter] = $outputFormat[1];
                    $counter++;
                }
            }
            while (!empty($sortVal)) {
                $propertyValues[$counter] = array_shift($sortVal);
                $orderValues[$counter] = array_shift($orderVal);
                $propertyLabelValues[$counter] = '';
                $propertyFormatValues[$counter] = '';
                $propertyLimitValues[$counter] = '';
                $counter++;
            }
        }
        $i = 0;
        $additionalPOs = array();
        $keys = array_keys($propertyValues);
        foreach ($keys as $value) {
            $additionalPOs[$value] = $propertyValues[$value];
            // array_merge won't work because numeric keys need to be preserved
        }
        $keys = array_keys($categoryValues);
        foreach ($keys as $value) {
            $additionalPOs[$value] = $categoryValues[$value];
            // array_merge won't work because numeric keys need to be preserved
        }
        $keys = array_keys($mainColumnLabels);
        foreach ($keys as $value) {
            $additionalPOs[$value] = $mainColumnLabels[$value];
            // array_merge won't work because numeric keys need to be preserved
        }
        ksort($additionalPOs);
        foreach ($additionalPOs as $key => $value) {
            if (array_key_exists($key, $propertyValues)) {
                /*
                 * Make an element for additional properties
                 */
                $result .= Html::openElement('div', array('id' => "sort_div_{$i}", 'class' => 'smwsort'));
                $result .= '<span class="smwquisortlabel">' . '<span class="smw-remove">' . '<a href="javascript:removePOInstance(\'sort_div_' . $i . '\')">' . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png"' . 'alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a></span>';
                $result .= wfMessage('smw_qui_property')->text() . '</span>';
                $result .= Html::input('property[' . $i . ']', $propertyValues[$key], 'text', array('size' => '25', 'id' => "property{$i}")) . "\n";
                $urlArgs["property[{$i}]"] = $propertyValues[$key];
                if ($smwgQSortingSupport) {
                    $result .= Html::openElement('select', array('name' => "order[{$i}]"));
                    if (array_key_exists($key, $orderValues)) {
                        $urlArgs["order[{$i}]"] = $orderValues[$key];
                    }
                    $if1 = !array_key_exists($key, $orderValues) || $orderValues[$key] == 'NONE';
                    $result .= Xml::option(wfMessage('smw_qui_nosort')->text(), "NONE", $if1);
                    $if2 = array_key_exists($key, $orderValues) && $orderValues[$key] == 'ASC';
                    $result .= Xml::option(wfMessage('smw_qui_ascorder')->text(), "ASC", $if2);
                    $if3 = array_key_exists($key, $orderValues) && $orderValues[$key] == 'DESC';
                    $result .= Xml::option(wfMessage('smw_qui_descorder')->text(), "DESC", $if3);
                    if ($smwgQRandSortingSupport) {
                        $if4 = array_key_exists($key, $orderValues) && $orderValues[$key] == 'RANDOM';
                        $result .= Xml::option(wfMessage('smw_qui_randorder')->text(), "RANDOM", $if4);
                    }
                    $result .= Xml::closeElement('select');
                    $if5 = array_key_exists($key, $displayValues);
                    $result .= Xml::checkLabel(wfMessage('smw_qui_shownresults')->text(), "display[{$i}]", "display{$i}", $if5);
                    if ($if5) {
                        $urlArgs["display[{$i}]"] = '1';
                    }
                }
                if (array_key_exists($key, $propertyLabelValues)) {
                    $result .= Html::hidden("prop_label[{$i}]", $propertyLabelValues[$key], array('id' => "prop_label{$i}"));
                    $urlArgs["prop_label[{$i}]"] = $propertyLabelValues[$key];
                } else {
                    $result .= Html::hidden("prop_label[{$i}]", '', array('id' => "prop_label{$i}"));
                }
                if (array_key_exists($key, $propertyFormatValues)) {
                    $result .= Html::hidden("prop_format[{$i}]", $propertyFormatValues[$key], array('id' => "prop_format{$i}"));
                    $urlArgs["prop_format[{$i}]"] = $propertyFormatValues[$key];
                } else {
                    $result .= Html::hidden("prop_format[{$i}]", '', array('id' => "prop_format{$i}"));
                }
                if (array_key_exists($key, $propertyLimitValues)) {
                    $result .= Html::hidden("prop_limit[{$i}]", $propertyLimitValues[$key], array('id' => "prop_limit{$i}"));
                    $urlArgs["prop_limit[{$i}]"] = $propertyLimitValues[$key];
                } else {
                    $result .= Html::hidden("prop_limit[{$i}]", '', array('id' => "prop_limit{$i}"));
                }
                $result .= Html::element('a', array('id' => "more{$i}", 'class' => 'smwq-more', 'href' => "javascript:smw_makePropDialog('{$i}')"), wfMessage('smw_qui_options')->text());
                $result .= Xml::closeElement('div');
                $i++;
            }
            if (array_key_exists($key, $categoryValues)) {
                if (!array_key_exists($key, $categoryLabelValues)) {
                    $categoryLabelValues[$key] = '';
                }
                if (!array_key_exists($key, $categoryYesValues)) {
                    $categoryYesValues[$key] = '';
                }
                if (!array_key_exists($key, $categoryNoValues)) {
                    $categoryNoValues[$key] = '';
                }
                /*
                 * Make an element for additional categories
                 */
                $result .= Html::openElement('div', array('id' => "sort_div_{$i}", 'class' => 'smwsort'));
                $result .= '<span class="smwquisortlabel">' . '<span class="smw-remove">' . Html::openElement('a', array('href' => "javascript:removePOInstance('sort_div_{$i}')")) . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png" alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a>' . '</span>' . wfMessage('smw_qui_category')->text() . '</span>' . Xml::input("category[{$i}]", '25', $categoryValues[$key], array('id' => "category{$i}")) . " " . Html::hidden("cat_label[{$i}]", $categoryLabelValues[$key], array('id' => "cat_label{$i}")) . Html::hidden("cat_yes[{$i}]", $categoryYesValues[$key], array('id' => "cat_yes{$i}")) . Html::hidden("cat_no[{$i}]", $categoryNoValues[$key], array('id' => "cat_no{$i}")) . Html::element('a', array('id' => "more{$i}", 'class' => 'smwq-more', 'href' => "javascript:smw_makeCatDialog('{$i}')"), wfMessage('smw_qui_options')->text()) . Xml::closeElement('div');
                $urlArgs["category[{$i}]"] = $categoryValues[$key] === '' ? ' ' : $categoryValues[$key];
                $urlArgs["cat_label[{$i}]"] = $categoryLabelValues[$key];
                $urlArgs["cat_yes[{$i}]"] = $categoryYesValues[$key];
                $urlArgs["cat_no[{$i}]"] = $categoryNoValues[$key];
                $i++;
            }
            if (array_key_exists($key, $mainColumnLabels)) {
                /*
                 * Make an element for main column aka query-matches
                 */
                $result .= Html::openElement('div', array('id' => "sort_div_{$i}", 'class' => 'smwsort')) . '<span class="smwquisortlabel">' . '<span class="smw-remove">' . Html::openelement('a', array('href' => "javascript:removePOInstance('sort_div_{$i}')")) . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png" alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a>' . '</span><strong>' . wfMessage('smw_qui_rescol')->text() . '</strong></span>' . Html::hidden("maincol_label[{$i}]", $mainColumnLabels[$key], array('id' => "maincol_label{$i}")) . " " . '<a class="smwq-more" href="javascript:smw_makeQueryMatchesDialog(\'' . $i . '\')">' . wfMessage('smw_qui_options')->text() . '</a> ' . '</div>';
                $urlArgs["maincol_label[{$i}]"] = $mainColumnLabels[$key] === '' ? ' ' : $mainColumnLabels[$key];
                $i++;
            }
        }
        $numSortValues = $i;
        $this->setUrlArgs($urlArgs);
        // END: create form elements already submitted earlier via form
        // create hidden form elements to be cloned later
        // property
        $hiddenProperty = Html::openElement('div', array('id' => 'property_starter', 'style' => 'display:none')) . '<span class="smwquisortlabel">' . '<span class="smw-remove">' . '<a>' . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png" alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a>' . '</span>' . wfMessage('smw_qui_property')->text() . '</span>' . Xml::input('property_num', '25') . " ";
        if ($smwgQSortingSupport) {
            $hiddenProperty .= Html::openElement('select', array('name' => 'order_num')) . Xml::option(wfMessage('smw_qui_nosort')->text(), 'NONE') . Xml::option(wfMessage('smw_qui_ascorder')->text(), 'ASC') . Xml::option(wfMessage('smw_qui_descorder')->text(), 'DESC');
            if ($smwgQRandSortingSupport) {
                $hiddenProperty .= Xml::option(wfMessage('smw_qui_randorder')->text(), 'RANDOM');
            }
            $hiddenProperty .= Xml::closeElement('select') . Xml::checkLabel(wfMessage('smw_qui_shownresults')->text(), "display_num", '', true);
        }
        $hiddenProperty .= Html::hidden('prop_label_num', '') . Html::hidden('prop_format_num', '') . Html::hidden('prop_limit_num', '') . Xml::closeElement('div');
        $hiddenProperty = json_encode($hiddenProperty);
        // category
        $hiddenCategory = Html::openElement('div', array('id' => 'category_starter', 'style' => 'display:none')) . '<span class="smwquisortlabel">' . '<span class="smw-remove">' . '<a>' . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png" alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a>' . '</span>' . wfMessage('smw_qui_category')->text() . '</span>' . Xml::input("category_num", '25') . " " . '<input type="hidden" name="cat_label_num" />' . '<input type="hidden" name="cat_yes_num" />' . '<input type="hidden" name="cat_no_num" />' . Xml::closeElement('div');
        $hiddenCategory = json_encode($hiddenCategory);
        // For '?' printouts
        $hiddenMainColumn = Html::openElement('div', array('id' => 'maincol_starter', 'style' => 'display:none')) . '<span class="smwquisortlabel">' . '<span class="smw-remove">' . '<a>' . '<img src="' . $smwgScriptPath . '/skins/images/close-button.png" alt="' . wfMessage('smw_qui_delete')->text() . '">' . '</a>' . '</span><strong>' . wfMessage('smw_qui_rescol')->text() . '</strong></span>' . Html::hidden("maincol_label_num", '') . " " . Xml::closeElement('div');
        $hiddenMainColumn = json_encode($hiddenMainColumn);
        // Create dialog-boxes
        // create dialogbox for Property options
        $propertyHtml = Xml::inputLabelSep(wfMessage('smw_qui_prop')->text(), '', 'd-property', 'd-property');
        $propertyLabelHtml = Xml::inputLabelSep(wfMessage('smw_qui_labl')->text(), '', 'd-prop-label', 'd-prop-label');
        $propertyFormatHtml = Xml::inputLabelSep(wfMessage('smw_qui_formt')->text(), '', 'd-prop-format', 'd-prop-format');
        $propertyLimitHtml = Xml::inputLabelSep(wfMessage('smw_qui_limt')->text(), 'd-prop-limit', 'd-prop-limit');
        $propertyDialogBox = Xml::openElement('div', array('id' => 'prop-dialog', 'title' => wfMessage('smw_prp_options')->text(), 'class' => 'smwpropdialog')) . '<table align="center">' . '<tr><td>' . $propertyHtml[0] . '</td><td>' . $propertyHtml[1] . '</td></tr>' . '<tr><td>' . $propertyLabelHtml[0] . '</td><td>' . $propertyLabelHtml[1] . '</td></tr>' . '<tr><td>' . $propertyLimitHtml[0] . '</td><td>' . $propertyLimitHtml[1] . '</td></tr>' . '<tr><td>' . $propertyFormatHtml[0] . '</td><td>' . $propertyFormatHtml[1] . '</td></tr>' . '</table>' . Xml::closeElement('div');
        // create dialogbox for Category options
        $categoryHtml = Xml::inputLabelSep(wfMessage('smw_qui_dcategory')->text(), '', 'd-category', 'd-category');
        $categoryLabelHtml = Xml::inputLabelSep(wfMessage('smw_qui_dlabel')->text(), '', 'd-category-label', 'd-category-label');
        $categoryYesHtml = Xml::inputLabelSep(wfMessage('smw_qui_dcatyes')->text(), '', 'd-category-yes', 'd-category-yes');
        $categoryNoHtml = Xml::inputLabelSep(wfMessage('smw_qui_dcatno')->text(), '', 'd-category-no', 'd-category-no');
        $categoryDialogBox = Xml::openElement('div', array('id' => 'cat-dialog', 'title' => wfMessage('smw_qui_catopts')->text(), 'class' => 'smwcatdialog')) . '<table align="center">' . '<tr><td>' . $categoryHtml[0] . '</td><td>' . $categoryHtml[1] . '</td></tr>' . '<tr><td>' . $categoryLabelHtml[0] . '</td><td>' . $categoryLabelHtml[1] . '</td></tr>' . '</table><br/><table align="center">' . '<tr><td>' . $categoryYesHtml[0] . '</td><td>' . $categoryYesHtml[1] . '</td></tr>' . '<tr><td>' . $categoryNoHtml[0] . '</td><td>' . $categoryNoHtml[1] . '</td></tr>' . '</table>' . Xml::closeElement('div');
        // Create dialog box for QueryMatches
        $mainResLabelHtml = Xml::inputLabelSep(wfMessage('smw_qui_dlabel')->text(), '', 'd-mainres-label');
        $mainResDialogBox = Xml::openElement('div', array('id' => 'mainres-dialog', 'title' => wfMessage('smw_qui_mainlabopts')->text(), 'class' => 'smwmainlabdialog')) . '<table align="center">' . '<tr><td>' . $mainResLabelHtml[0] . '</td><td>' . $mainResLabelHtml[1] . '</td></tr>' . '</table>' . Xml::closeElement('div');
        $result .= '<div id="sorting_main"></div>' . "\n";
        $result .= '[<a href="javascript:smw_addPropertyInstance(\'property_starter\', \'sorting_main\')">' . wfMessage('smw_qui_addnprop')->text() . '</a>]' . '[<a href="javascript:smw_addCategoryInstance(\'category_starter\', \'sorting_main\')">' . wfMessage('smw_qui_addcategory')->text() . '</a>]' . '[<a href="javascript:smw_addMainColInstance(\'maincol_starter\', \'sorting_main\')">' . wfMessage('smw_qui_addrescol')->text() . '</a>]' . "\n";
        // Javascript code for handling adding and removing the "sort" inputs
        if ($enableAutocomplete == SMWQueryUI::ENABLE_AUTO_SUGGEST) {
            $this->enableAutocompletion();
        }
        // localisation messages for javascript
        $optionsMsg = wfMessage('smw_qui_options')->text();
        $okMsg = wfMessage('smw_qui_ok')->text();
        $cancelMsg = wfMessage('smw_qui_cancel')->text();
        $javascriptText = <<<EOT
<script type="text/javascript">
\tvar num_elements = {$numSortValues};
\tvar smwgQPrintoutLimit={$smwgQPrintoutLimit};
EOT;
        // add autocomplete
        if ($enableAutocomplete == SMWQueryUI::ENABLE_AUTO_SUGGEST) {
            $javascriptText .= <<<EOT

\tfunction smw_property_autocomplete(){
\t\tjQuery( '[name*="property"]' ).autocomplete( {
\t\t\tminLength: 2,
\t\t\tsource: function( request, response ) {
\t\t\t\turl = wgScriptPath+'/api.php?action=opensearch&limit=10&namespace='+wgNamespaceIds['property']+'&format=jsonfm';

\t\t\t\tjQuery.getJSON( url, 'search='+request.term, function( data ) {
\t\t\t\t\t//remove the namespace prefix 'Property:' from returned data
\t\t\t\t\tfor( i=0; i < data[1].length; i++ ){
\t\t\t\t\t\tdata[1][i]=data[1][i].substr(data[1][i].indexOf(':')+1);
\t\t\t\t\t}
\t\t\t\t\tresponse(data[1]);
\t\t\t\t});
\t\t\t}
\t\t} );
\t}

\tfunction smw_category_autocomplete(){
\t\t\tjQuery( '[name*="category"]' ).autocomplete( {
\t\t\tminLength: 2,
\t\t\tsource: function(request, response) {
\t\t\t\turl = wgScriptPath+'/api.php?action=opensearch&limit=10&namespace='+wgNamespaceIds['category']+'&format=jsonfm';

\t\t\t\tjQuery.getJSON( url, 'search='+request.term, function( data ){
\t\t\t\t\t//remove the namespace prefix 'Category:' from returned data
\t\t\t\t\tfor( i=0; i<data[1].length; i++ ){
\t\t\t\t\t\tdata[1][i]=data[1][i].substr(data[1][i].indexOf(':')+1);
\t\t\t\t\t}
\t\t\t\t\tresponse(data[1]);
\t\t\t\t});
\t\t\t}
\t\t});
\t}
EOT;
        } else {
            $javascriptText .= <<<EOT
\tfunction smw_property_autocomplete(){
\t}

\tfunction smw_category_autocomplete(){
\t}

EOT;
        }
        $javascriptText .= <<<EOT

\tfunction smw_makeMainlabelDialog(){
\t\tjQuery('#mainlabel-dialog').dialog("open");
\t}

\tfunction smwRemoveMainLabel(){
\t\t\tjQuery( '#mainlabelhid' ).attr( 'value', '-' );
\t\t\tjQuery( '#mainlabelvis' ).attr( 'value', '' );
\t\t\tjQuery( '#smwmainlabel' ).hide();
\t}


\tfunction smw_makeQueryMatchesDialog( qm_id ){
\t\tqmLabel=jQuery('#maincol_label'+qm_id).attr('value');
\t\tjQuery('#d-mainres-label').attr('value', qmLabel);
\t\tjQuery( '#mainres-dialog' ).dialog.sortid = qm_id;
\t\tjQuery( '#mainres-dialog' ).dialog( 'open' );
\t}

\tfunction smw_makeCatDialog( cat_id ){
\t\tjQuery( '#prop-cat input' ).attr('value','');

\t\tcat=jQuery('#category'+cat_id)[0].value;
\t\tlabel=jQuery('#cat_label'+cat_id)[0].value;
\t\tyes = jQuery('#cat_yes'+cat_id)[0].value;
\t\tno = jQuery('#cat_no'+cat_id)[0].value;

\t\tjQuery('#d-category-yes').attr('value',yes);
\t\tjQuery('#d-category-no').attr('value',no);
\t\tjQuery('#d-category-label').attr('value',label);
\t\tjQuery('#d-category').attr('value',cat);

\t\tjQuery('#cat-dialog').dialog.id=cat_id;
\t\tjQuery('#cat-dialog').dialog('open');
\t}

\tfunction smw_makePropDialog(prop_id){
\t\tjQuery('#prop-dialog input').attr('value','');
\t\tprop=jQuery('#property'+prop_id).attr('value');
\t\tlabel=jQuery('#prop_label'+prop_id).attr('value');
\t\tformat=jQuery('#prop_format'+prop_id).attr('value');
\t\tlimit=jQuery('#prop_limit'+prop_id).attr('value');
\t\tjQuery('#d-property').attr('value', prop);
\t\tjQuery('#d-prop-label').attr('value', label);
\t\tjQuery('#d-prop-limit').attr('value', limit);
\t\tjQuery('#d-prop-format').attr('value', format);
\t\tjQuery('#prop-dialog').dialog.id=prop_id;
\t\tjQuery('#prop-dialog').dialog('open');
\t}
\t// code for handling adding and removing the "sort" inputs

\tfunction smw_addPropertyInstance(starter_div_id, main_div_id) {
\t\tif( jQuery( '.smwsort' ).length > smwgQPrintoutLimit ) return;

\t\tvar starter_div = document.getElementById(starter_div_id);
\t\tvar main_div = document.getElementById(main_div_id);

\t\t//Create the new instance
\t\tvar new_div = starter_div.cloneNode(true);
\t\tvar div_id = 'sort_div_' + num_elements;
\t\tnew_div.id = div_id;
\t\tnew_div.style.display = 'block';
\t\tjQuery(new_div.getElementsByTagName('label')).attr('for', 'display'+num_elements);
\t\tjQuery(new_div).addClass( 'smwsort' );
\t\tvar children = new_div.getElementsByTagName('*');
\t\tvar x;
\t\tfor (x = 0; x < children.length; x++) {
\t\t\tif (jQuery(children[x]).attr('for')) jQuery(children[x]).attr('for',"display"+num_elements);
\t\t\tif (children[x].name){
\t\t\t\tchildren[x].id = children[x].name.replace(/_num/, ''+num_elements);
\t\t\t\tchildren[x].name = children[x].name.replace(/_num/, '[' + num_elements + ']');
\t\t\t}
\t\t}

\t\t//Create 'options' link
\t\tvar more_button =document.createElement('span');
\t\tmore_button.innerHTML = ' <a class="smwq-more" href="javascript:smw_makePropDialog(\\'' + num_elements + '\\')">{$optionsMsg}</a> ';
\t\tmore_button.id = 'more'+num_elements;
\t\tnew_div.appendChild(more_button);

\t\t//Add the new instance
\t\tmain_div.appendChild(new_div);

\t\t// initialize delete button
\t\tst='sort_div_'+num_elements;
\t\tjQuery('#'+new_div.id).find(".smw-remove a")[0].href="javascript:removePOInstance('"+st+"')";
\t\tnum_elements++;
\t\tsmw_property_autocomplete();
\t}

\tfunction smw_addCategoryInstance(starter_div_id, main_div_id) {
\t\tif( jQuery( '.smwsort' ).length > smwgQPrintoutLimit ) return;

\t\tvar starter_div = document.getElementById(starter_div_id);
\t\tvar main_div = document.getElementById(main_div_id);

\t\t//Create the new instance
\t\tvar new_div = starter_div.cloneNode(true);
\t\tvar div_id = 'sort_div_' + num_elements;
\t\tnew_div.id = div_id;
\t\tnew_div.style.display = 'block';
\t\tjQuery(new_div.getElementsByTagName('label')).attr('for', 'display'+num_elements);
\t\tjQuery(new_div).addClass( 'smwsort' );
\t\tvar children = new_div.getElementsByTagName('*');
\t\tvar x;
\t\tfor (x = 0; x < children.length; x++) {
\t\t\tif (jQuery(children[x]).attr('for')) jQuery(children[x]).attr('for',"display"+num_elements);
\t\t\tif (children[x].name){
\t\t\t\tchildren[x].id = children[x].name.replace(/_num/, ''+num_elements);
\t\t\t\tchildren[x].name = children[x].name.replace(/_num/, '[' + num_elements + ']');
\t\t\t}
\t\t}

\t\t//Create 'options' link
\t\tvar more_button =document.createElement('span');
\t\tmore_button.innerHTML = ' <a class="smwq-more" href="javascript:smw_makeCatDialog(\\'' + num_elements + '\\')">{$optionsMsg}</a> ';
\t\tmore_button.id = 'more'+num_elements;
\t\tnew_div.appendChild(more_button);

\t\t//Add the new instance
\t\tmain_div.appendChild(new_div);

\t\t// initialize delete button
\t\tst='sort_div_'+num_elements;
\t\tjQuery('#'+new_div.id).find(".smw-remove a")[0].href="javascript:removePOInstance('"+st+"')";
\t\tnum_elements++;
\t\tsmw_category_autocomplete();
\t}

\tfunction smw_addMainColInstance(starter_div_id, main_div_id) {
\t\tif( (jQuery('#smwmainlabel').css('display')=='none')
\t\t\t&& (jQuery('.smwsort').length==1)
\t\t){
\t\t\tjQuery('#mainlabelhid').attr('value','');
\t\t\tjQuery('#mainlabelvis').attr('value','');
\t\t\tjQuery('#smwmainlabel').show();
\t\t} else {
\t\t\tif( jQuery( '.smwsort' ).length > smwgQPrintoutLimit ){
\t\t\t\treturn;
\t\t\t}
\t\t\tvar starter_div = document.getElementById(starter_div_id);
\t\t\tvar main_div = document.getElementById(main_div_id);

\t\t\t//Create the new instance
\t\t\tvar new_div = starter_div.cloneNode(true);
\t\t\tvar div_id = 'sort_div_' + num_elements;
\t\t\tnew_div.id = div_id;
\t\t\tnew_div.style.display = 'block';
\t\t\tjQuery(new_div.getElementsByTagName('label')).attr('for', 'display'+num_elements);
\t\t\tjQuery(new_div).addClass( 'smwsort' );
\t\t\tvar children = new_div.getElementsByTagName('*');
\t\t\tvar x;
\t\t\tfor (x = 0; x < children.length; x++) {
\t\t\t\tif (jQuery(children[x]).attr('for')) jQuery(children[x]).attr('for',"display"+num_elements);
\t\t\t\tif (children[x].name){
\t\t\t\t\tchildren[x].id = children[x].name.replace(/_num/, ''+num_elements);
\t\t\t\t\tchildren[x].name = children[x].name.replace(/_num/, '[' + num_elements + ']');
\t\t\t\t}
\t\t\t}
\t\t\t//Create 'options' link
\t\t\tvar more_button =document.createElement('span');
\t\t\tmore_button.innerHTML = ' <a class="smwq-more" href="javascript:smw_makeQueryMatchesDialog(\\'' + num_elements + '\\')">{$optionsMsg}</a> ';
\t\t\tmore_button.id = 'more'+num_elements;
\t\t\tnew_div.appendChild(more_button);

\t\t\t//Add the new instance
\t\t\tmain_div.appendChild(new_div);

\t\t\t// initialize delete button
\t\t\tst='sort_div_'+num_elements;
\t\t\tjQuery('#'+new_div.id).find(".smw-remove a")[0].href="javascript:removePOInstance('"+st+"')";
\t\t\tnum_elements++;
\t\t}
\t}

\tfunction removePOInstance(div_id) {
\t\tvar olddiv = document.getElementById(div_id);
\t\tvar parent = olddiv.parentNode;
\t\tparent.removeChild(olddiv);
\t}

\tjQuery(function(){
\t\tjQuery('{$hiddenProperty}').appendTo(document.body);
\t\tjQuery('{$hiddenCategory}').appendTo(document.body);
\t\tjQuery('{$hiddenMainColumn}').appendTo(document.body);
\t\tjQuery('{$propertyDialogBox}').appendTo(document.body);
\t\tjQuery('{$categoryDialogBox}').appendTo(document.body);
\t\tjQuery('{$mainResDialogBox}').appendTo(document.body);

\t\tjQuery( '#mainlabel-dialog' ).dialog( {
\t\t\tautoOpen: false,
\t\t\tmodal: true,
\t\t\tresizable: true,
\t\t\tminWidth: 400,
\t\t\tbuttons: {
\t\t\t\t"{$okMsg}": function(){
\t\t\t\t\tjQuery('#mainlabelhid').attr('value',jQuery('#mainlabelvis').attr('value'));
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t},
\t\t\t\t"{$cancelMsg}": function(){
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t}
\t\t\t}
\t\t} );

\t\tjQuery( '#mainres-dialog' ).dialog( {
\t\t\tautoOpen: false,
\t\t\tmodal: true,
\t\t\tresizable: true,
\t\t\tminWidth: 400,
\t\t\tbuttons: {
\t\t\t\t"{$okMsg}": function(){
\t\t\t\t\tid = jQuery( this ).dialog.sortid;
\t\t\t\t\tlabel = jQuery('#d-mainres-label');
\t\t\t\t\tjQuery('#maincol_label'+id).attr('value', label);
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t},
\t\t\t\t"{$cancelMsg}": function(){
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t}
\t\t\t}
\t\t} );

\t\tjQuery( '#cat-dialog' ).dialog( {
\t\t\tautoOpen: false,
\t\t\tmodal: true,
\t\t\tresizable: true,
\t\t\tminHeight: 200,
\t\t\tminWidth: 400,
\t\t\tbuttons: {
\t\t\t\t"{$okMsg}": function(){
\t\t\t\t\tcat = jQuery('#d-category').attr('value');
\t\t\t\t\tlabel = jQuery('#d-category-label').attr('value');
\t\t\t\t\tyes = jQuery('#d-category-yes').attr('value');
\t\t\t\t\tno = jQuery('#d-category-no').attr('value');
\t\t\t\t\tid=jQuery(this).dialog.id;

\t\t\t\t\tjQuery('#category'+id).attr('value',cat);
\t\t\t\t\tjQuery('#cat_label'+id).attr('value',label);
\t\t\t\t\tjQuery('#cat_yes'+id).attr('value',yes);
\t\t\t\t\tjQuery('#cat_no'+id).attr('value',no);
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t},
\t\t\t\t"{$cancelMsg}": function(){
\t\t\t\t\tjQuery('#cat-dialog input').attr('value','');
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t}
\t\t\t}
\t\t});

\t\tjQuery('#prop-dialog').dialog({
\t\t\tautoOpen: false,
\t\t\tmodal: true,
\t\t\tresizable: true,
\t\t\tminWidth: 400,
\t\t\tbuttons: {
\t\t\t\t"{$okMsg}": function(){
\t\t\t\t\tid=jQuery(this).dialog.id;
\t\t\t\t\tproperty=jQuery('#d-property').attr('value');
\t\t\t\t\tlabel=jQuery('#d-prop-label').attr('value');
\t\t\t\t\tlimit=jQuery('#d-prop-limit').attr('value');
\t\t\t\t\tformat=jQuery('#d-prop-format').attr('value');


\t\t\t\t\tjQuery('#property'+id).attr('value',property);
\t\t\t\t\tjQuery('#prop_label'+id).attr('value',label);
\t\t\t\t\tjQuery('#prop_limit'+id).attr('value',limit);
\t\t\t\t\tjQuery('#prop_format'+id).attr('value',format);
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t},
\t\t\t\t"{$cancelMsg}": function(){
\t\t\t\t\tjQuery('#prop-dialog input').attr('value','');
\t\t\t\t\tjQuery(this).dialog("close");
\t\t\t\t}
\t\t\t}
\t\t});
\t\tjQuery('#sort-more').click(function(){jQuery('#prop-dialog').dialog("open");});
\t\tjQuery('#d-category').bind('change keyup focus click',function(){
\t\t\tif(jQuery(this).attr('value')==''){
\t\t\t\tjQuery('#d-category-yes').css('visibility','hidden');
\t\t\t\tjQuery('#d-category-no').css('visibility','hidden');
\t\t\t\tjQuery('#cat-dialog [for="d-category-no"]').css('visibility','hidden');
\t\t\t\tjQuery('#cat-dialog [for="d-category-yes"]').css('visibility','hidden');
\t\t\t} else {
\t\t\t\tjQuery('#d-category-yes').css('visibility','visible');
\t\t\t\tjQuery('#d-category-no').css('visibility','visible');
\t\t\t\tjQuery('#cat-dialog [for="d-category-no"]').css('visibility','visible');
\t\t\t\tjQuery('#cat-dialog [for="d-category-yes"]').css('visibility','visible');
\t\t\t}
\t\t});
\t});

\tjQuery(document).ready(smw_property_autocomplete);
\tjQuery(document).ready(smw_category_autocomplete);
</script>

EOT;
        SMWOutputs::requireScript('smwAutocompleteQueryUI', $javascriptText);
        $result .= '</span>';
        return $result;
    }
 /**
  * @param TranslatablePage $page
  */
 protected function priorityLanguagesForm(TranslatablePage $page)
 {
     global $wgContLang;
     $groupId = $page->getMessageGroupId();
     $this->getOutput()->wrapWikiMsg('==$1==', 'tpt-sections-prioritylangs');
     $langSelector = Xml::languageSelector($wgContLang->getCode(), false, $this->getLanguage()->getCode());
     $hLangs = Xml::inputLabelSep($this->msg('tpt-select-prioritylangs')->text(), 'prioritylangs', 'tpt-prioritylangs', 50, TranslateMetadata::get($groupId, 'prioritylangs'));
     $hForce = Xml::checkLabel($this->msg('tpt-select-prioritylangs-force')->text(), 'forcelimit', 'tpt-priority-forcelimit', TranslateMetadata::get($groupId, 'priorityforce') === 'on');
     $hReason = Xml::inputLabelSep($this->msg('tpt-select-prioritylangs-reason')->text(), 'priorityreason', 'tpt-priority-reason', 50, TranslateMetadata::get($groupId, 'priorityreason'));
     $this->getOutput()->addHTML("<table>" . "<tr>" . "<td class='mw-label'>{$hLangs['0']}</td>" . "<td class='mw-input'>{$hLangs['1']}{$langSelector['1']}</td>" . "</tr>" . "<tr><td></td><td class='mw-inout'>{$hForce}</td></tr>" . "<tr>" . "<td class='mw-label'>{$hReason['0']}</td>" . "<td class='mw-input'>{$hReason['1']}</td>" . "</tr>" . "</table>");
 }
コード例 #7
0
	/**
	 * @param $filename string
	 */
	function printTranslations( $filename ){
		global $wgScript;
		
		$languages = Language::getLanguageNames();
		$languages['fallback'] = wfMsg( 'translatesvg-fallbackdesc');
		$languages['qqq'] = wfMsg( 'translatesvg-qqqdesc' );
		uksort($this->translations, "self::customsort");
			
		$this->getOutput()->addModules( 'ext.translateSvg' );
		$html = $this->thumb .
			Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'specialtranslatesvg' ) ) .
			Html::hidden( 'file', $filename ) .
			Html::hidden( 'step', 'translated' ) .
			Html::hidden( 'title', $this->getTitle()->getPrefixedText() );

		$groups = array();
		foreach( $this->translations as $language=>$translations ){
			$html .= Html::openElement( 'fieldset', array( 'id' => "mw-translatesvg-fieldset-$language" ) ) .
					Html::element( 'legend', null, $languages[$language] ) . 
					Html::openElement( 'div', array( 'class' => 'mw-collapsible mw-collapsed',
						'data-collapsetext' => wfMsg( 'translatesvg-toggle-hide' ),
						'data-expandtext' => wfMsg( 'translatesvg-toggle-view' ) ) );
			$groups = array();
			for( $i = 0; $i < $this->number; $i++ ){
				$fallback = $this->getFallback( $i );
				$existing = $this->getExisting( $i, $language );
				$desc = ( $language === 'qqq' ) ? '' : '&#160;' . Html::element( 'small', null, $this->getDescriptor( $i ) );
				list( $label, $input ) = Xml::inputLabelSep( $fallback['text'], "mw-translatesvg-$language-$i-text", "mw-translatesvg-$language-$i-text", 50, $existing['text'] );
				$grouphtml = $label . $desc . '&#160;&#160;&#160;' . $input;
				if( $language !== 'qqq' ){
					$grouphtml .= Html::element( 'br' ) .
							"&#160;&#160;&#160;" .
							Xml::inputLabel( wfMsg( 'translatesvg-xcoordinate-pre' ), "mw-translatesvg-$language-$i-x", "mw-translatesvg-$language-$i-x", 5, $existing['x'] ) .
							"&#160;&#160;&#160;" .
							Xml::inputLabel( wfMsg( 'translatesvg-ycoordinate-pre' ), "mw-translatesvg-$language-$i-y", "mw-translatesvg-$language-$i-y", 5, $existing['y'] );
				}
				$groups[] = $grouphtml;
			}
			$html .= implode( Html::element( 'div', array( 'style' => 'height:10px' ) ), $groups );
			$html .= Html::closeElement( 'div' ) . Html::closeElement( 'fieldset' );
		}
		$html .= Xml::submitButton( wfMsg( 'translatesvg-submit' ) ) . "\n" .
				Html::closeElement( 'form' );
		$this->getOutput()->addHTML( $html );
	}