summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Legler <alex@a3li.li>2015-08-14 20:11:52 +0200
committerAlex Legler <alex@a3li.li>2015-08-14 20:11:52 +0200
commit406658484ac434d75d47d082a907937aa2366ad1 (patch)
tree5071d7e22c8e43837be6912edcf726522c1c80a6 /SemanticForms
parentIgnore Widget's compiled templates (diff)
downloadextensions-406658484ac434d75d47d082a907937aa2366ad1.tar.gz
extensions-406658484ac434d75d47d082a907937aa2366ad1.tar.bz2
extensions-406658484ac434d75d47d082a907937aa2366ad1.zip
Remove extensions that will be pulled in via composer
Diffstat (limited to 'SemanticForms')
-rw-r--r--SemanticForms/.gitignore11
-rw-r--r--SemanticForms/.gitreview7
-rw-r--r--SemanticForms/.jshintrc41
-rw-r--r--SemanticForms/COPYING347
-rw-r--r--SemanticForms/INSTALL40
-rw-r--r--SemanticForms/README67
-rw-r--r--SemanticForms/SemanticForms.php504
-rw-r--r--SemanticForms/i18n/af.json26
-rw-r--r--SemanticForms/i18n/aln.json47
-rw-r--r--SemanticForms/i18n/am.json10
-rw-r--r--SemanticForms/i18n/an.json14
-rw-r--r--SemanticForms/i18n/ar.json130
-rw-r--r--SemanticForms/i18n/arc.json37
-rw-r--r--SemanticForms/i18n/arz.json96
-rw-r--r--SemanticForms/i18n/ast.json198
-rw-r--r--SemanticForms/i18n/avk.json77
-rw-r--r--SemanticForms/i18n/az.json13
-rw-r--r--SemanticForms/i18n/azb.json8
-rw-r--r--SemanticForms/i18n/bar.json8
-rw-r--r--SemanticForms/i18n/be-tarask.json159
-rw-r--r--SemanticForms/i18n/be.json10
-rw-r--r--SemanticForms/i18n/bg.json64
-rw-r--r--SemanticForms/i18n/bjn.json9
-rw-r--r--SemanticForms/i18n/bn.json49
-rw-r--r--SemanticForms/i18n/br.json124
-rw-r--r--SemanticForms/i18n/bs.json88
-rw-r--r--SemanticForms/i18n/ca.json202
-rw-r--r--SemanticForms/i18n/ce.json31
-rw-r--r--SemanticForms/i18n/ckb.json6
-rw-r--r--SemanticForms/i18n/cs.json53
-rw-r--r--SemanticForms/i18n/cu.json8
-rw-r--r--SemanticForms/i18n/da.json14
-rw-r--r--SemanticForms/i18n/de-formal.json23
-rw-r--r--SemanticForms/i18n/de.json210
-rw-r--r--SemanticForms/i18n/diq.json19
-rw-r--r--SemanticForms/i18n/dsb.json114
-rw-r--r--SemanticForms/i18n/ee.json6
-rw-r--r--SemanticForms/i18n/el.json202
-rw-r--r--SemanticForms/i18n/en.json208
-rw-r--r--SemanticForms/i18n/eo.json93
-rw-r--r--SemanticForms/i18n/es.json197
-rw-r--r--SemanticForms/i18n/et.json60
-rw-r--r--SemanticForms/i18n/eu.json32
-rw-r--r--SemanticForms/i18n/fa.json106
-rw-r--r--SemanticForms/i18n/fi.json196
-rw-r--r--SemanticForms/i18n/fo.json8
-rw-r--r--SemanticForms/i18n/fr.json214
-rw-r--r--SemanticForms/i18n/frp.json99
-rw-r--r--SemanticForms/i18n/fy.json14
-rw-r--r--SemanticForms/i18n/ga.json12
-rw-r--r--SemanticForms/i18n/gl.json201
-rw-r--r--SemanticForms/i18n/gom-latn.json8
-rw-r--r--SemanticForms/i18n/gom.json8
-rw-r--r--SemanticForms/i18n/got.json10
-rw-r--r--SemanticForms/i18n/grc.json40
-rw-r--r--SemanticForms/i18n/gsw.json125
-rw-r--r--SemanticForms/i18n/gu.json22
-rw-r--r--SemanticForms/i18n/gv.json13
-rw-r--r--SemanticForms/i18n/ha.json6
-rw-r--r--SemanticForms/i18n/hak.json8
-rw-r--r--SemanticForms/i18n/haw.json13
-rw-r--r--SemanticForms/i18n/he.json176
-rw-r--r--SemanticForms/i18n/hi.json63
-rw-r--r--SemanticForms/i18n/hil.json8
-rw-r--r--SemanticForms/i18n/hr.json11
-rw-r--r--SemanticForms/i18n/hsb.json187
-rw-r--r--SemanticForms/i18n/hu.json125
-rw-r--r--SemanticForms/i18n/hy.json9
-rw-r--r--SemanticForms/i18n/ia.json171
-rw-r--r--SemanticForms/i18n/id.json151
-rw-r--r--SemanticForms/i18n/ig.json10
-rw-r--r--SemanticForms/i18n/io.json9
-rw-r--r--SemanticForms/i18n/is.json10
-rw-r--r--SemanticForms/i18n/it.json185
-rw-r--r--SemanticForms/i18n/ja.json186
-rw-r--r--SemanticForms/i18n/jbo.json8
-rw-r--r--SemanticForms/i18n/jv.json49
-rw-r--r--SemanticForms/i18n/ka.json84
-rw-r--r--SemanticForms/i18n/km.json77
-rw-r--r--SemanticForms/i18n/kn.json10
-rw-r--r--SemanticForms/i18n/ko.json199
-rw-r--r--SemanticForms/i18n/kri.json8
-rw-r--r--SemanticForms/i18n/krj.json9
-rw-r--r--SemanticForms/i18n/ksh.json127
-rw-r--r--SemanticForms/i18n/ku-latn.json16
-rw-r--r--SemanticForms/i18n/kw.json11
-rw-r--r--SemanticForms/i18n/lb.json121
-rw-r--r--SemanticForms/i18n/li.json21
-rw-r--r--SemanticForms/i18n/lt.json92
-rw-r--r--SemanticForms/i18n/lv.json133
-rw-r--r--SemanticForms/i18n/mhr.json10
-rw-r--r--SemanticForms/i18n/min.json10
-rw-r--r--SemanticForms/i18n/mk.json199
-rw-r--r--SemanticForms/i18n/ml.json58
-rw-r--r--SemanticForms/i18n/mn.json9
-rw-r--r--SemanticForms/i18n/mr.json103
-rw-r--r--SemanticForms/i18n/ms.json37
-rw-r--r--SemanticForms/i18n/mt.json51
-rw-r--r--SemanticForms/i18n/myv.json18
-rw-r--r--SemanticForms/i18n/mzn.json8
-rw-r--r--SemanticForms/i18n/nah.json24
-rw-r--r--SemanticForms/i18n/nb.json190
-rw-r--r--SemanticForms/i18n/nds-nl.json9
-rw-r--r--SemanticForms/i18n/nds.json19
-rw-r--r--SemanticForms/i18n/niu.json8
-rw-r--r--SemanticForms/i18n/nl.json203
-rw-r--r--SemanticForms/i18n/nn.json101
-rw-r--r--SemanticForms/i18n/nso.json14
-rw-r--r--SemanticForms/i18n/oc.json146
-rw-r--r--SemanticForms/i18n/os.json13
-rw-r--r--SemanticForms/i18n/pa.json8
-rw-r--r--SemanticForms/i18n/pdc.json17
-rw-r--r--SemanticForms/i18n/pfl.json9
-rw-r--r--SemanticForms/i18n/pl.json154
-rw-r--r--SemanticForms/i18n/pms.json188
-rw-r--r--SemanticForms/i18n/ps.json41
-rw-r--r--SemanticForms/i18n/pt-br.json207
-rw-r--r--SemanticForms/i18n/pt.json163
-rw-r--r--SemanticForms/i18n/qqq.json148
-rw-r--r--SemanticForms/i18n/rif.json8
-rw-r--r--SemanticForms/i18n/ro.json95
-rw-r--r--SemanticForms/i18n/roa-tara.json54
-rw-r--r--SemanticForms/i18n/ru.json207
-rw-r--r--SemanticForms/i18n/rue.json13
-rw-r--r--SemanticForms/i18n/sa.json9
-rw-r--r--SemanticForms/i18n/si.json121
-rw-r--r--SemanticForms/i18n/sk.json113
-rw-r--r--SemanticForms/i18n/sl.json11
-rw-r--r--SemanticForms/i18n/sr-ec.json69
-rw-r--r--SemanticForms/i18n/sr-el.json68
-rw-r--r--SemanticForms/i18n/stq.json81
-rw-r--r--SemanticForms/i18n/sv.json189
-rw-r--r--SemanticForms/i18n/sw.json8
-rw-r--r--SemanticForms/i18n/szl.json10
-rw-r--r--SemanticForms/i18n/ta.json65
-rw-r--r--SemanticForms/i18n/te.json50
-rw-r--r--SemanticForms/i18n/tet.json11
-rw-r--r--SemanticForms/i18n/tg-cyrl.json41
-rw-r--r--SemanticForms/i18n/tg-latn.json38
-rw-r--r--SemanticForms/i18n/th.json11
-rw-r--r--SemanticForms/i18n/tk.json9
-rw-r--r--SemanticForms/i18n/tl.json180
-rw-r--r--SemanticForms/i18n/tr.json62
-rw-r--r--SemanticForms/i18n/tt-cyrl.json8
-rw-r--r--SemanticForms/i18n/tzm.json9
-rw-r--r--SemanticForms/i18n/uk.json207
-rw-r--r--SemanticForms/i18n/ur.json34
-rw-r--r--SemanticForms/i18n/uz.json33
-rw-r--r--SemanticForms/i18n/vep.json35
-rw-r--r--SemanticForms/i18n/vi.json119
-rw-r--r--SemanticForms/i18n/vo.json64
-rw-r--r--SemanticForms/i18n/wa.json22
-rw-r--r--SemanticForms/i18n/yi.json38
-rw-r--r--SemanticForms/i18n/zh-hans.json196
-rw-r--r--SemanticForms/i18n/zh-hant.json180
-rw-r--r--SemanticForms/includes/SF_AutocompleteAPI.php247
-rw-r--r--SemanticForms/includes/SF_AutoeditAPI.php1182
-rw-r--r--SemanticForms/includes/SF_CreatePageJob.php57
-rw-r--r--SemanticForms/includes/SF_Form.php162
-rw-r--r--SemanticForms/includes/SF_FormEditAction.php177
-rw-r--r--SemanticForms/includes/SF_FormEditPage.php63
-rw-r--r--SemanticForms/includes/SF_FormField.php390
-rw-r--r--SemanticForms/includes/SF_FormLinker.php362
-rw-r--r--SemanticForms/includes/SF_FormPrinter.php1861
-rw-r--r--SemanticForms/includes/SF_FormUtils.php612
-rw-r--r--SemanticForms/includes/SF_HelperFormAction.php152
-rw-r--r--SemanticForms/includes/SF_PageSchemas.php933
-rw-r--r--SemanticForms/includes/SF_PageSection.php181
-rw-r--r--SemanticForms/includes/SF_ParserFunctions.php667
-rw-r--r--SemanticForms/includes/SF_Template.php337
-rw-r--r--SemanticForms/includes/SF_TemplateField.php175
-rw-r--r--SemanticForms/includes/SF_TemplateInForm.php208
-rw-r--r--SemanticForms/includes/SF_Utils.php1148
-rw-r--r--SemanticForms/includes/forminputs/SF_CategoriesInput.php25
-rw-r--r--SemanticForms/includes/forminputs/SF_CategoryInput.php25
-rw-r--r--SemanticForms/includes/forminputs/SF_CheckboxInput.php85
-rw-r--r--SemanticForms/includes/forminputs/SF_CheckboxesInput.php128
-rw-r--r--SemanticForms/includes/forminputs/SF_ComboBoxInput.php177
-rw-r--r--SemanticForms/includes/forminputs/SF_DateInput.php144
-rw-r--r--SemanticForms/includes/forminputs/SF_DateTimeInput.php146
-rw-r--r--SemanticForms/includes/forminputs/SF_DropdownInput.php120
-rw-r--r--SemanticForms/includes/forminputs/SF_EnumInput.php62
-rw-r--r--SemanticForms/includes/forminputs/SF_FormInput.php353
-rw-r--r--SemanticForms/includes/forminputs/SF_ListBoxInput.php102
-rw-r--r--SemanticForms/includes/forminputs/SF_MultiEnumInput.php36
-rw-r--r--SemanticForms/includes/forminputs/SF_RadioButtonInput.php151
-rw-r--r--SemanticForms/includes/forminputs/SF_TextAreaInput.php240
-rw-r--r--SemanticForms/includes/forminputs/SF_TextAreaWithAutocompleteInput.php50
-rw-r--r--SemanticForms/includes/forminputs/SF_TextInput.php286
-rw-r--r--SemanticForms/includes/forminputs/SF_TextWithAutocompleteInput.php244
-rw-r--r--SemanticForms/includes/forminputs/SF_TokensInput.php182
-rw-r--r--SemanticForms/includes/forminputs/SF_TreeInput.php378
-rw-r--r--SemanticForms/includes/forminputs/SF_YearInput.php82
-rw-r--r--SemanticForms/languages/SF_Aliases.php777
-rw-r--r--SemanticForms/languages/SF_Language.php41
-rw-r--r--SemanticForms/languages/SF_LanguageAr.php19
-rw-r--r--SemanticForms/languages/SF_LanguageArz.php19
-rw-r--r--SemanticForms/languages/SF_LanguageCa.php19
-rw-r--r--SemanticForms/languages/SF_LanguageDe.php23
-rw-r--r--SemanticForms/languages/SF_LanguageDe_formal.php19
-rw-r--r--SemanticForms/languages/SF_LanguageEl.php22
-rw-r--r--SemanticForms/languages/SF_LanguageEn.php22
-rw-r--r--SemanticForms/languages/SF_LanguageEs.php19
-rw-r--r--SemanticForms/languages/SF_LanguageFa.php19
-rw-r--r--SemanticForms/languages/SF_LanguageFi.php21
-rw-r--r--SemanticForms/languages/SF_LanguageFr.php19
-rw-r--r--SemanticForms/languages/SF_LanguageHe.php19
-rw-r--r--SemanticForms/languages/SF_LanguageId.php17
-rw-r--r--SemanticForms/languages/SF_LanguageIt.php22
-rw-r--r--SemanticForms/languages/SF_LanguageNl.php21
-rw-r--r--SemanticForms/languages/SF_LanguageNo.php19
-rw-r--r--SemanticForms/languages/SF_LanguageZh_cn.php22
-rw-r--r--SemanticForms/languages/SF_LanguageZh_tw.php22
-rw-r--r--SemanticForms/languages/SF_Magic.php125
-rw-r--r--SemanticForms/languages/SF_Messages.php31
-rw-r--r--SemanticForms/languages/SF_Namespaces.php137
-rw-r--r--SemanticForms/libs/SF_autoedit.js83
-rw-r--r--SemanticForms/libs/SF_autogrow.js53
-rw-r--r--SemanticForms/libs/SF_checkboxes.js57
-rw-r--r--SemanticForms/libs/SF_collapsible.js55
-rw-r--r--SemanticForms/libs/SF_imagePreview.js66
-rw-r--r--SemanticForms/libs/SF_popupform.js829
-rw-r--r--SemanticForms/libs/SF_preview.js213
-rw-r--r--SemanticForms/libs/SF_submit.js197
-rw-r--r--SemanticForms/libs/SF_wikieditor.js42
-rw-r--r--SemanticForms/libs/SemanticForms.js1084
-rw-r--r--SemanticForms/libs/ext.dynatree.js52
-rw-r--r--SemanticForms/libs/ext.sf.js28
-rw-r--r--SemanticForms/libs/ext.sf.select2.base.js271
-rw-r--r--SemanticForms/libs/ext.sf.select2.combobox.js275
-rw-r--r--SemanticForms/libs/ext.sf.select2.tokens.js314
-rw-r--r--SemanticForms/libs/jquery.browser.js46
-rw-r--r--SemanticForms/libs/jquery.dynatree.js3420
-rw-r--r--SemanticForms/libs/jquery.fancybox.js1152
-rw-r--r--SemanticForms/libs/select2.js3378
-rw-r--r--SemanticForms/phpunit.xml.dist26
-rw-r--r--SemanticForms/skins/MW-Icon-AlertMark.pngbin1187 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_add_above.pngbin1026 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_add_above_active.pngbin1292 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_add_above_hover.pngbin1227 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_autoedit.css48
-rw-r--r--SemanticForms/skins/SF_checkboxes.css12
-rw-r--r--SemanticForms/skins/SF_collapsible.css12
-rw-r--r--SemanticForms/skins/SF_jquery_ui_overrides.css39
-rw-r--r--SemanticForms/skins/SF_popupform.css89
-rw-r--r--SemanticForms/skins/SF_remove.pngbin756 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_remove_active.pngbin1061 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_remove_hover.pngbin958 -> 0 bytes
-rw-r--r--SemanticForms/skins/SF_submit.css26
-rw-r--r--SemanticForms/skins/SF_wikieditor.css9
-rw-r--r--SemanticForms/skins/SemanticForms.css166
-rw-r--r--SemanticForms/skins/close.pngbin476 -> 0 bytes
-rw-r--r--SemanticForms/skins/collapse-minus.pngbin120 -> 0 bytes
-rw-r--r--SemanticForms/skins/collapse-plus.pngbin123 -> 0 bytes
-rw-r--r--SemanticForms/skins/dyntree-loading.gifbin570 -> 0 bytes
-rw-r--r--SemanticForms/skins/ext.sf.select2.css63
-rw-r--r--SemanticForms/skins/fancy_close.pngbin1133 -> 0 bytes
-rw-r--r--SemanticForms/skins/fancybox-x.pngbin297 -> 0 bytes
-rw-r--r--SemanticForms/skins/fancybox-y.pngbin247 -> 0 bytes
-rw-r--r--SemanticForms/skins/fancybox.pngbin17318 -> 0 bytes
-rw-r--r--SemanticForms/skins/icons-rtl.gifbin4046 -> 0 bytes
-rw-r--r--SemanticForms/skins/icons.gifbin4041 -> 0 bytes
-rw-r--r--SemanticForms/skins/jquery.fancybox.css359
-rw-r--r--SemanticForms/skins/loading.gifbin2767 -> 0 bytes
-rw-r--r--SemanticForms/skins/loadingbg.pngbin5560 -> 0 bytes
-rw-r--r--SemanticForms/skins/rearranger.pngbin321 -> 0 bytes
-rw-r--r--SemanticForms/skins/select2/select2-bootstrap.css87
-rw-r--r--SemanticForms/skins/select2/select2-spinner.gifbin1849 -> 0 bytes
-rw-r--r--SemanticForms/skins/select2/select2.css644
-rw-r--r--SemanticForms/skins/select2/select2.pngbin613 -> 0 bytes
-rw-r--r--SemanticForms/skins/select2/select2x2.pngbin845 -> 0 bytes
-rw-r--r--SemanticForms/skins/ui.dynatree.css450
-rw-r--r--SemanticForms/skins/vline-rtl.gifbin842 -> 0 bytes
-rw-r--r--SemanticForms/skins/vline.gifbin844 -> 0 bytes
-rw-r--r--SemanticForms/specials/SF_CreateCategory.php133
-rw-r--r--SemanticForms/specials/SF_CreateClass.php335
-rw-r--r--SemanticForms/specials/SF_CreateForm.php565
-rw-r--r--SemanticForms/specials/SF_CreateProperty.php189
-rw-r--r--SemanticForms/specials/SF_CreateTemplate.php291
-rw-r--r--SemanticForms/specials/SF_FormEdit.php185
-rw-r--r--SemanticForms/specials/SF_FormStart.php201
-rw-r--r--SemanticForms/specials/SF_Forms.php70
-rw-r--r--SemanticForms/specials/SF_RunQuery.php181
-rw-r--r--SemanticForms/specials/SF_Templates.php100
-rw-r--r--SemanticForms/specials/SF_UploadWindow.php1080
-rw-r--r--SemanticForms/tests/bootstrap.php42
-rw-r--r--SemanticForms/tests/mw-phpunit-runner.php43
-rw-r--r--SemanticForms/tests/phpunit/includes/SF_FormPrinterTest.php131
288 files changed, 0 insertions, 42259 deletions
diff --git a/SemanticForms/.gitignore b/SemanticForms/.gitignore
deleted file mode 100644
index a9015871..00000000
--- a/SemanticForms/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.svn
-*~
-*.kate-swp
-.*.swp
-
-composer.lock
-composer.phar
-
-.idea/
-vendor/
-extensions/ \ No newline at end of file
diff --git a/SemanticForms/.gitreview b/SemanticForms/.gitreview
deleted file mode 100644
index b719cd52..00000000
--- a/SemanticForms/.gitreview
+++ /dev/null
@@ -1,7 +0,0 @@
-[gerrit]
-host=gerrit.wikimedia.org
-port=29418
-project=mediawiki/extensions/SemanticForms
-defaultbranch=master
-defaultrebase=0
-defaultremote=origin
diff --git a/SemanticForms/.jshintrc b/SemanticForms/.jshintrc
deleted file mode 100644
index 80b00ba9..00000000
--- a/SemanticForms/.jshintrc
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "predef": [
- "mediaWiki",
- "jQuery",
- "semanticforms",
- "mw",
- "$",
- "sf",
- "ext"
- ],
-
- "bitwise": true,
- "camelcase": false,
- "curly": true,
- "eqeqeq": true,
- "forin": false,
- "immed": true,
- "latedef": true,
- "newcap": true,
- "noarg": false,
- "noempty": true,
- "nonew": true,
- "quotmark": false,
- "regexp": false,
- "undef": true,
- "unused": false,
- "strict": false,
- "trailing": true,
-
- "laxbreak": true,
- "smarttabs": true,
- "multistr": true,
-
- "browser": true,
-
- "nomen": false,
- "onevar": false,
-
- "scripturl": false,
- "supernew": false
-}
diff --git a/SemanticForms/COPYING b/SemanticForms/COPYING
deleted file mode 100644
index 717ac377..00000000
--- a/SemanticForms/COPYING
+++ /dev/null
@@ -1,347 +0,0 @@
-The license text below "----" applies to all files within this distribution, other
-than those that are in a directory which contains files named "LICENSE" or
-"COPYING", or a subdirectory thereof. For those files, the license text contained in
-said file overrides any license information contained in directories of smaller depth.
-Alternative licenses are typically used for software that is provided by external
-parties, and merely packaged with the Semantic Forms release for convenience.
-----
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/SemanticForms/INSTALL b/SemanticForms/INSTALL
deleted file mode 100644
index ce3c1525..00000000
--- a/SemanticForms/INSTALL
+++ /dev/null
@@ -1,40 +0,0 @@
-[[Semantic Forms 2.8]]
-
-Contents:
-* Disclaimer
-* Requirements
-* Installation
-* Contact
-
-== Disclaimer ==
-
-There is no guarantee that any of Semantic Forms' functionality will
-work on your system. On the other hand, the code does not make any
-modifications to the database directly, so it should be a low-risk
-installation.
-
-For a proper legal disclaimer, see the file "COPYING".
-
-== Requirements ==
-
-The extension requires an install of Semantic MediaWiki 1.6 or
-greater, as well as MediaWiki 1.19 or greater.
-
-== Installation ==
-
-(1) Extract the archive to obtain the directory "SemanticForms" that contains
- all relevant files. Copy this directory (or extract/download it) to
- "[wikipath]/extensions/".
-(2) Insert the following line into the file "[wikipath]/LocalSettings.php":
- include_once('extensions/SemanticForms/SemanticForms.php');
-
-'''Remark:''' Semantic Forms creates an additional custom namespace, "Form"
-(see http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces). If you have
-your own custom namespaces and you want to change the numbers used by Semantic
-Forms and Semantic MediaWiki, see the file SMW_Settings.php, within
-Semantic MediaWiki, for instructions.
-
-== Contact ==
-
-If you have any issues or questions, please send them to
-yaron57@gmail.com.
diff --git a/SemanticForms/README b/SemanticForms/README
deleted file mode 100644
index 68285cc3..00000000
--- a/SemanticForms/README
+++ /dev/null
@@ -1,67 +0,0 @@
-== About ==
-
-Semantic Forms is an extension to MediaWiki that works in
-conjunction with another extension, Semantic MediaWiki, to allow
-for the creation and usage of forms to add and edit semantic data.
-For much more information on Semantic Forms, see the extension
-homepage at
-http://www.mediawiki.org/wiki/Extension:Semantic_Forms
-
-Notes on installing Semantic Forms can be found in the file INSTALL.
-
-== Credits ==
-
-Semantic Forms was created, and mostly written by, Yaron Koren.
-
-Significant parts of the code were contributed by Stephan Gambke.
-
-Much of the jQuery and related Javascript functionality was initially
-created by Sanyam Goyal as part of the 2010 Google Summer of Code
-program.
-
-Integration into the Page Schemas extension was initially created by
-Ankit Garg as part of the 2011 Google Summer of Code.
-
-Support for section handling, and PHPUnit tests, were added by Himeshi
-De Silva as part of the 2013 Google Summer of Code.
-
-The "tokens" and updated "combobox" input types were created by
-Jatin Mehta as part of the 2014 Google Summer of Code.
-
-Important code contributions were also made by Christoph Burgmer,
-Daniel Friesen, Daniel Hansch, Eugene Mednikov, Harold Solbrig, Jayson
-Harshbarger, Jeffrey Stuckman, Joel Natividad, Jeroen De Dauw,
-Louis Gerbarg, Mathias Lidal, Matt Williamson, Niklas Laxstrom, Nils
-Opperman, Patrick Nagel, Remco de Boer, Sebastian Richter, Sergey
-Chernyshev, Siebrand Mazeland, Vedmaka, wheresmytab and others.
-
-Language translations were provided by many people; see each file in
-the /languages directory for the full listings.
-
-== Contact ==
-
-Most comments, questions and suggestions should be sent to the Semantic
-MediaWiki mailing list:
-
- https://lists.sourceforge.net/lists/listinfo/semediawiki-user
-
-If possible, please add "[SF]" at the beginning of the subject line, to
-clarify the subject matter.
-
-Bug reports should be submitted at the MediaWiki Bugzilla site:
-
- https://bugzilla.wikimedia.org/
-
-== Credits to other projects ==
-
-* Semantic Forms includes the FancyBox JavaScript library by
-Janis Skarnelis (http://fancybox.net). FancyBox is distributed
-under both the MIT and GPL licenses.
-
-* Semantic Forms also includes the Dynatree JavaScript library by
-Martin Wendt (https://code.google.com/p/dynatree/). Dynatree is also
-distributed under both the MIT and GPL licenses.
-
-* Semantic Forms also includes the Select2 JavaScript library by Igor
-Vaynberg (https://github.com/ivaynberg/select2). Select2 is
-distributed under both the Apache and GPL licenses.
diff --git a/SemanticForms/SemanticForms.php b/SemanticForms/SemanticForms.php
deleted file mode 100644
index 8f19503b..00000000
--- a/SemanticForms/SemanticForms.php
+++ /dev/null
@@ -1,504 +0,0 @@
-<?php
-/**
- * Default settings for Semantic Forms.
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * Forms for adding and editing semantic data.
- *
- * @defgroup SF Semantic Forms
- */
-
-/**
- * The module Form Inputs contains form input classes.
- * @defgroup SFFormInput Form Inputs
- * @ingroup SF
- */
-
-/**
- * The module Special Pages contains all Special Pages defined by
- * Semantic Forms.
- *
- * @defgroup SFSpecialPages Special Pages
- * @ingroup SF
- */
-
-/**
- * The module Language contains all language-related classes.
- *
- * @defgroup SFLanguage Language
- * @ingroup SF
- */
-
-
-if ( !defined( 'MEDIAWIKI' ) ) die();
-
-if ( defined( 'SF_VERSION' ) ) {
- // Do not load Semantic Forms more than once.
- return 1;
-}
-
-define( 'SF_VERSION', '2.8' );
-
-if ( !defined( 'SMW_VERSION' ) ) {
- die( "ERROR: <a href=\"http://semantic-mediawiki.org\">Semantic MediaWiki</a> must be installed for Semantic Forms to run!" );
-}
-
-$GLOBALS['wgExtensionCredits'][defined( 'SEMANTIC_EXTENSION_TYPE' ) ? 'semantic' : 'specialpage'][] = array(
- 'path' => __FILE__,
- 'name' => 'Semantic Forms',
- 'version' => SF_VERSION,
- 'author' => array( 'Yaron Koren', 'Stephan Gambke', '...' ),
- 'url' => 'https://www.mediawiki.org/wiki/Extension:Semantic_Forms',
- 'descriptionmsg' => 'semanticforms-desc',
- 'license-name' => 'GPL-2.0+'
-);
-
-# ##
-# This is the path to your installation of Semantic Forms as
-# seen from the web. Change it if required ($wgScriptPath is the
-# path to the base directory of your wiki). No final slash.
-# #
-$GLOBALS['sfgPartialPath'] = '/extensions/SemanticForms';
-$GLOBALS['sfgScriptPath'] = $GLOBALS['wgScriptPath'] . $GLOBALS['sfgPartialPath'];
-# #
-
-# ##
-# This is the path to your installation of Semantic Forms as
-# seen on your local filesystem. Used against some PHP file path
-# issues.
-# #
-$GLOBALS['sfgIP'] = dirname( __FILE__ );
-# #
-
-
-// Constants for special properties
-define( 'SF_SP_HAS_DEFAULT_FORM', 1 );
-define( 'SF_SP_HAS_ALTERNATE_FORM', 2 );
-define( 'SF_SP_CREATES_PAGES_WITH_FORM', 3 );
-define( 'SF_SP_PAGE_HAS_DEFAULT_FORM', 4 );
-define( 'SF_SP_HAS_FIELD_LABEL_FORMAT', 5 );
-
-/**
- * This is a delayed init that makes sure that MediaWiki is set up
- * properly before we add our stuff.
- */
-$GLOBALS['wgExtensionFunctions'][] = function() {
- // This global variable is needed so that other extensions can hook
- // into it to add their own input types.
- $GLOBALS['sfgFormPrinter'] = new StubObject( 'sfgFormPrinter', 'SFFormPrinter' );
-};
-
-$GLOBALS['wgHooks']['LinkEnd'][] = 'SFFormLinker::setBrokenLink';
-// 'SkinTemplateNavigation' replaced 'SkinTemplateTabs' in the Vector skin
-$GLOBALS['wgHooks']['SkinTemplateTabs'][] = 'SFFormEditAction::displayTab';
-$GLOBALS['wgHooks']['SkinTemplateNavigation'][] = 'SFFormEditAction::displayTab2';
-$GLOBALS['wgHooks']['SkinTemplateTabs'][] = 'SFHelperFormAction::displayTab';
-$GLOBALS['wgHooks']['SkinTemplateNavigation'][] = 'SFHelperFormAction::displayTab2';
-$GLOBALS['wgHooks']['smwInitProperties'][] = 'SFUtils::initProperties';
-$GLOBALS['wgHooks']['ArticlePurge'][] = 'SFFormUtils::purgeCache';
-$GLOBALS['wgHooks']['ArticleSave'][] = 'SFFormUtils::purgeCache';
-$GLOBALS['wgHooks']['ParserFirstCallInit'][] = 'SFParserFunctions::registerFunctions';
-$GLOBALS['wgHooks']['MakeGlobalVariablesScript'][] = 'SFFormUtils::setGlobalJSVariables';
-$GLOBALS['wgHooks']['PageSchemasRegisterHandlers'][] = 'SFPageSchemas::registerClass';
-$GLOBALS['wgHooks']['EditPage::importFormData'][] = 'SFUtils::showFormPreview';
-$GLOBALS['wgHooks']['CanonicalNamespaces'][] = 'SFUtils::registerNamespaces';
-$GLOBALS['wgHooks']['UnitTestsList'][] = 'SFUtils::onUnitTestsList';
-
-// Admin Links hook needs to be called in a delayed way so that it
-// will always be called after SMW's Admin Links addition; as of
-// SMW 1.9, SMW delays calling all its hook functions.
-$GLOBALS['wgExtensionFunctions'][] = function() {
- $GLOBALS['wgHooks']['AdminLinks'][] = 'SFUtils::addToAdminLinks';
-};
-
-// New "actions"
-$GLOBALS['wgActions']['formedit'] = 'SFFormEditAction';
-$GLOBALS['wgActions']['formcreate'] = 'SFHelperFormAction';
-
-// API modules
-$GLOBALS['wgAPIModules']['sfautocomplete'] = 'SFAutocompleteAPI';
-$GLOBALS['wgAPIModules']['sfautoedit'] = 'SFAutoeditAPI';
-
-// register all special pages and other classes
-$GLOBALS['wgSpecialPages']['Forms'] = 'SFForms';
-$GLOBALS['wgAutoloadClasses']['SFForms'] = __DIR__ . '/specials/SF_Forms.php';
-$GLOBALS['wgSpecialPageGroups']['Forms'] = 'pages';
-$GLOBALS['wgSpecialPages']['CreateForm'] = 'SFCreateForm';
-$GLOBALS['wgAutoloadClasses']['SFCreateForm'] = __DIR__ . '/specials/SF_CreateForm.php';
-$GLOBALS['wgSpecialPageGroups']['CreateForm'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['Templates'] = 'SFTemplates';
-$GLOBALS['wgAutoloadClasses']['SFTemplates'] = __DIR__ . '/specials/SF_Templates.php';
-$GLOBALS['wgSpecialPageGroups']['Templates'] = 'pages';
-$GLOBALS['wgSpecialPages']['CreateTemplate'] = 'SFCreateTemplate';
-$GLOBALS['wgAutoloadClasses']['SFCreateTemplate'] = __DIR__ . '/specials/SF_CreateTemplate.php';
-$GLOBALS['wgSpecialPageGroups']['CreateTemplate'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['CreateProperty'] = 'SFCreateProperty';
-$GLOBALS['wgAutoloadClasses']['SFCreateProperty'] = __DIR__ . '/specials/SF_CreateProperty.php';
-$GLOBALS['wgSpecialPageGroups']['CreateProperty'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['CreateCategory'] = 'SFCreateCategory';
-$GLOBALS['wgAutoloadClasses']['SFCreateCategory'] = __DIR__ . '/specials/SF_CreateCategory.php';
-$GLOBALS['wgSpecialPageGroups']['CreateCategory'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['CreateClass'] = 'SFCreateClass';
-$GLOBALS['wgAutoloadClasses']['SFCreateClass'] = __DIR__ . '/specials/SF_CreateClass.php';
-$GLOBALS['wgSpecialPageGroups']['CreateClass'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['FormStart'] = 'SFFormStart';
-$GLOBALS['wgAutoloadClasses']['SFFormStart'] = __DIR__ . '/specials/SF_FormStart.php';
-$GLOBALS['wgSpecialPageGroups']['FormStart'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['FormEdit'] = 'SFFormEdit';
-$GLOBALS['wgAutoloadClasses']['SFFormEdit'] = __DIR__ . '/specials/SF_FormEdit.php';
-$GLOBALS['wgSpecialPageGroups']['FormEdit'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['RunQuery'] = 'SFRunQuery';
-$GLOBALS['wgAutoloadClasses']['SFRunQuery'] = __DIR__ . '/specials/SF_RunQuery.php';
-$GLOBALS['wgSpecialPageGroups']['RunQuery'] = 'sf_group';
-$GLOBALS['wgSpecialPages']['UploadWindow'] = 'SFUploadWindow';
-$GLOBALS['wgAutoloadClasses']['SFUploadWindow'] = __DIR__ . '/specials/SF_UploadWindow.php';
-$GLOBALS['wgAutoloadClasses']['SFTemplateField'] = __DIR__ . '/includes/SF_TemplateField.php';
-$GLOBALS['wgAutoloadClasses']['SFForm'] = __DIR__ . '/includes/SF_Form.php';
-$GLOBALS['wgAutoloadClasses']['SFTemplate'] = __DIR__ . '/includes/SF_Template.php';
-$GLOBALS['wgAutoloadClasses']['SFTemplateInForm'] = __DIR__ . '/includes/SF_TemplateInForm.php';
-$GLOBALS['wgAutoloadClasses']['SFFormField'] = __DIR__ . '/includes/SF_FormField.php';
-$GLOBALS['wgAutoloadClasses']['SFFormPrinter'] = __DIR__ . '/includes/SF_FormPrinter.php';
-$GLOBALS['wgAutoloadClasses']['SFFormUtils'] = __DIR__ . '/includes/SF_FormUtils.php';
-$GLOBALS['wgAutoloadClasses']['SFFormEditPage'] = __DIR__ . '/includes/SF_FormEditPage.php';
-$GLOBALS['wgAutoloadClasses']['SFUtils'] = __DIR__ . '/includes/SF_Utils.php';
-$GLOBALS['wgAutoloadClasses']['SFFormLinker'] = __DIR__ . '/includes/SF_FormLinker.php';
-$GLOBALS['wgAutoloadClasses']['SFPageSchemas'] = __DIR__ . '/includes/SF_PageSchemas.php';
-$GLOBALS['wgAutoloadClasses']['SFParserFunctions'] = __DIR__ . '/includes/SF_ParserFunctions.php';
-$GLOBALS['wgAutoloadClasses']['SFAutocompleteAPI'] = __DIR__ . '/includes/SF_AutocompleteAPI.php';
-$GLOBALS['wgAutoloadClasses']['SFAutoeditAPI'] = __DIR__ . '/includes/SF_AutoeditAPI.php';
-$GLOBALS['wgAutoloadClasses']['SFFormEditAction'] = __DIR__ . '/includes/SF_FormEditAction.php';
-$GLOBALS['wgAutoloadClasses']['SFHelperFormAction'] = __DIR__ . '/includes/SF_HelperFormAction.php';
-$GLOBALS['wgAutoloadClasses']['SFPageSection'] = __DIR__ . '/includes/SF_PageSection.php';
-
-// Form inputs
-$GLOBALS['wgAutoloadClasses']['SFFormInput'] = __DIR__ . '/includes/forminputs/SF_FormInput.php';
-$GLOBALS['wgAutoloadClasses']['SFTextInput'] = __DIR__ . '/includes/forminputs/SF_TextInput.php';
-$GLOBALS['wgAutoloadClasses']['SFTextWithAutocompleteInput'] = __DIR__ . '/includes/forminputs/SF_TextWithAutocompleteInput.php';
-$GLOBALS['wgAutoloadClasses']['SFTextAreaInput'] = __DIR__ . '/includes/forminputs/SF_TextAreaInput.php';
-$GLOBALS['wgAutoloadClasses']['SFTextAreaWithAutocompleteInput'] = __DIR__ . '/includes/forminputs/SF_TextAreaWithAutocompleteInput.php';
-$GLOBALS['wgAutoloadClasses']['SFEnumInput'] = __DIR__ . '/includes/forminputs/SF_EnumInput.php';
-$GLOBALS['wgAutoloadClasses']['SFMultiEnumInput'] = __DIR__ . '/includes/forminputs/SF_MultiEnumInput.php';
-$GLOBALS['wgAutoloadClasses']['SFCheckboxInput'] = __DIR__ . '/includes/forminputs/SF_CheckboxInput.php';
-$GLOBALS['wgAutoloadClasses']['SFCheckboxesInput'] = __DIR__ . '/includes/forminputs/SF_CheckboxesInput.php';
-$GLOBALS['wgAutoloadClasses']['SFRadioButtonInput'] = __DIR__ . '/includes/forminputs/SF_RadioButtonInput.php';
-$GLOBALS['wgAutoloadClasses']['SFDropdownInput'] = __DIR__ . '/includes/forminputs/SF_DropdownInput.php';
-$GLOBALS['wgAutoloadClasses']['SFListBoxInput'] = __DIR__ . '/includes/forminputs/SF_ListBoxInput.php';
-$GLOBALS['wgAutoloadClasses']['SFComboBoxInput'] = __DIR__ . '/includes/forminputs/SF_ComboBoxInput.php';
-$GLOBALS['wgAutoloadClasses']['SFDateInput'] = __DIR__ . '/includes/forminputs/SF_DateInput.php';
-$GLOBALS['wgAutoloadClasses']['SFDateTimeInput'] = __DIR__ . '/includes/forminputs/SF_DateTimeInput.php';
-$GLOBALS['wgAutoloadClasses']['SFYearInput'] = __DIR__ . '/includes/forminputs/SF_YearInput.php';
-$GLOBALS['wgAutoloadClasses']['SFTreeInput'] = __DIR__ . '/includes/forminputs/SF_TreeInput.php';
-$GLOBALS['wgAutoloadClasses']['SFCategoryInput'] = __DIR__ . '/includes/forminputs/SF_CategoryInput.php';
-$GLOBALS['wgAutoloadClasses']['SFCategoriesInput'] = __DIR__ . '/includes/forminputs/SF_CategoriesInput.php';
-$GLOBALS['wgAutoloadClasses']['SFTokensInput'] = __DIR__ . '/includes/forminputs/SF_TokensInput.php';
-
-$GLOBALS['wgJobClasses']['createPage'] = 'SFCreatePageJob';
-$GLOBALS['wgAutoloadClasses']['SFCreatePageJob'] = __DIR__ . '/includes/SF_CreatePageJob.php';
-require_once( __DIR__ . '/languages/SF_Language.php' );
-
-$GLOBALS['wgAjaxExportList'][] = 'SFAutoeditAPI::handleAutoEdit';
-
-$GLOBALS['wgMessagesDirs']['SemanticForms'] = __DIR__ . '/i18n';
-$GLOBALS['wgExtensionMessagesFiles']['SemanticForms'] = __DIR__ . '/languages/SF_Messages.php';
-$GLOBALS['wgExtensionMessagesFiles']['SemanticFormsAlias'] = __DIR__ . '/languages/SF_Aliases.php';
-$GLOBALS['wgExtensionMessagesFiles']['SemanticFormsMagic'] = __DIR__ . '/languages/SF_Magic.php';
-$GLOBALS['wgExtensionMessagesFiles']['SemanticFormsNS'] = __DIR__ . '/languages/SF_Namespaces.php';
-
-// Allow for popup windows for file upload
-$GLOBALS['wgEditPageFrameOptions'] = 'SAMEORIGIN';
-
-// register client-side modules
-if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
- $sfgResourceTemplate = array(
- 'localBasePath' => __DIR__,
- 'remoteExtPath' => 'SemanticForms'
- );
- $GLOBALS['wgResourceModules'] += array(
- 'ext.semanticforms.main' => $sfgResourceTemplate + array(
- 'scripts' => array(
- 'libs/SemanticForms.js',
- 'libs/SF_preview.js'
- ),
- 'styles' => array(
- 'skins/SemanticForms.css',
- 'skins/SF_jquery_ui_overrides.css',
- ),
- 'dependencies' => array(
- 'jquery.ui.core',
- 'jquery.ui.autocomplete',
- 'jquery.ui.button',
- 'jquery.ui.sortable',
- 'jquery.ui.widget',
- 'ext.semanticforms.fancybox',
- 'ext.semanticforms.autogrow',
- 'mediawiki.util',
- 'ext.semanticforms.select2',
- ),
- 'messages' => array(
- 'sf_formerrors_header',
- 'sf_too_few_instances_error',
- 'sf_too_many_instances_error',
- 'sf_blank_error',
- 'sf_bad_url_error',
- 'sf_bad_email_error',
- 'sf_bad_number_error',
- ),
- ),
- 'ext.semanticforms.browser' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/jquery.browser.js',
- ),
- 'ext.semanticforms.fancybox' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/jquery.fancybox.js',
- 'styles' => 'skins/jquery.fancybox.css',
- 'dependencies' => array( 'ext.semanticforms.browser' ),
- ),
- 'ext.semanticforms.dynatree' => $sfgResourceTemplate + array(
- 'dependencies' => array( 'jquery.ui.widget' ),
- 'scripts' => array(
- 'libs/jquery.dynatree.js',
- 'libs/ext.dynatree.js',
- ),
- 'styles' => 'skins/ui.dynatree.css',
- ),
- 'ext.semanticforms.autogrow' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_autogrow.js',
- ),
- 'ext.semanticforms.popupformedit' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_popupform.js',
- 'styles' => 'skins/SF_popupform.css',
- 'dependencies' => array( 'ext.semanticforms.browser' ),
- ),
- 'ext.semanticforms.autoedit' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_autoedit.js',
- 'styles' => 'skins/SF_autoedit.css',
- 'messages' => array(
- 'sf-autoedit-wait',
- 'sf_autoedit_anoneditwarning',
- ),
- ),
- 'ext.semanticforms.submit' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_submit.js',
- 'styles' => 'skins/SF_submit.css',
- 'messages' => array(
- 'sf_formedit_saveandcontinue_summary',
- 'sf_formedit_saveandcontinueediting',
- ),
- ),
- 'ext.semanticforms.collapsible' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_collapsible.js',
- 'styles' => 'skins/SF_collapsible.css',
- ),
- 'ext.semanticforms.wikieditor' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_wikieditor.js',
- 'styles' => 'skins/SF_wikieditor.css',
- 'dependencies' => array(
- 'ext.semanticforms.main',
- 'jquery.wikiEditor',
- ),
- ),
- 'ext.semanticforms.imagepreview' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_imagePreview.js',
- ),
- 'ext.semanticforms.checkboxes' => $sfgResourceTemplate + array(
- 'scripts' => 'libs/SF_checkboxes.js',
- 'styles' => 'skins/SF_checkboxes.css',
- 'messages' => array(
- 'sf_forminputs_checkboxes_select_all',
- 'sf_forminputs_checkboxes_select_none',
- ),
- ),
- 'ext.semanticforms.select2' => $sfgResourceTemplate + array(
- 'scripts' => array(
- 'libs/select2.js',
- 'libs/ext.sf.select2.base.js',
- 'libs/ext.sf.select2.combobox.js',
- 'libs/ext.sf.select2.tokens.js',
- ),
- 'styles' => array(
- 'skins/select2/select2.css',
- 'skins/select2/select2-bootstrap.css',
- 'skins/ext.sf.select2.css',
- ),
- 'dependencies' => array(
- 'ext.semanticforms',
- 'mediawiki.jqueryMsg',
- ),
- 'messages' => array(
- 'sf-select2-no-matches',
- 'sf-select2-searching',
- 'sf-select2-input-too-short',
- 'sf-select2-selection-too-big',
- ),
- ),
- 'ext.semanticforms' => $sfgResourceTemplate + array(
- 'scripts' => array(
- 'libs/ext.sf.js',
- ),
- ),
- );
-}
-
-// PHP fails to find relative includes at some level of inclusion:
-// $pathfix = $IP . $GLOBALS['sfgScriptPath;
-
-// Global functions
-
-
-/**
- * Initialize a global language object for content language. This
- * must happen early on, even before user language is known, to
- * determine labels for additional namespaces. In contrast, messages
- * can be initialised much later, when they are actually needed.
- */
-call_user_func( function ( $langcode ) {
- if ( !empty( $GLOBALS['sfgContLang'] ) ) { return; }
-
- $cont_lang_class = 'SF_Language' . str_replace( '-', '_', ucfirst( $langcode ) );
- if ( file_exists( __DIR__ . '/languages/' . $cont_lang_class . '.php' ) ) {
- include_once( __DIR__ . '/languages/' . $cont_lang_class . '.php' );
- }
-
- // fallback if language not supported
- if ( !class_exists( $cont_lang_class ) ) {
- include_once( __DIR__ . '/languages/SF_LanguageEn.php' );
- $cont_lang_class = 'SF_LanguageEn';
- }
-
- $GLOBALS['sfgContLang'] = new $cont_lang_class();
-}, $GLOBALS['wgLanguageCode'] );
-
-# ##
-# The number of allowed values per autocomplete - too many might
-# slow down the database, and Javascript's completion.
-# ##
-$GLOBALS['sfgMaxAutocompleteValues'] = 1000;
-
-# ##
-# The number of allowed values for local autocomplete - after which
-# it will switch to remote autocompletion.
-# ##
-$GLOBALS['sfgMaxLocalAutocompleteValues'] = 100;
-
-# ##
-# Whether to autocomplete on all characters in a string, not just the
-# beginning of words - this is especially important for Unicode strings,
-# since the use of the '\b' regexp character to match on the beginnings
-# of words fails for them.
-# ##
-$GLOBALS['sfgAutocompleteOnAllChars'] = false;
-
-# ##
-# Used for caching of autocompletion values.
-# ##
-$GLOBALS['sfgCacheAutocompleteValues'] = false;
-$GLOBALS['sfgAutocompleteCacheTimeout'] = null;
-
-# ##
-# Global variables for handling the two edit tabs (for traditional editing
-# and for editing with a form):
-# $GLOBALS['sfgRenameEditTabs'] renames the edit-with-form tab to just "Edit", and
-# the traditional-editing tab, if it is visible, to "Edit source", in
-# whatever language is being used.
-# $GLOBALS['sfgRenameMainEditTab'] renames only the traditional editing tab, to
-# "Edit source".
-# The wgGroupPermissions 'viewedittab' setting dictates which types of
-# visitors will see the "Edit" tab, for pages that are editable by form -
-# by default all will see it.
-# ##
-$GLOBALS['sfgRenameEditTabs'] = false;
-$GLOBALS['sfgRenameMainEditTab'] = false;
-$GLOBALS['wgGroupPermissions']['*']['viewedittab'] = true;
-$GLOBALS['wgAvailableRights'][] = 'viewedittab';
-
-# ##
-# Permission to edit form fields defined as 'restricted'
-# ##
-$GLOBALS['wgGroupPermissions']['sysop']['editrestrictedfields'] = true;
-$GLOBALS['wgAvailableRights'][] = 'editrestrictedfields';
-
-# ##
-# Permission to view, and create pages with, Special:CreateClass
-# ##
-$GLOBALS['wgGroupPermissions']['user']['createclass'] = true;
-$GLOBALS['wgAvailableRights'][] = 'createclass';
-
-# ##
-# List separator character
-# ##
-$GLOBALS['sfgListSeparator'] = ",";
-
-# ##
-# Extend the edit form from the internal EditPage class rather than using a
-# special page and hacking things up.
-#
-# @note This is still experimental.
-# ##
-$GLOBALS['sfgUseFormEditPage'] = false;// method_exists('EditPage', 'showFooter');
-
-# ##
-# Use 24-hour time format in forms, e.g. 15:30 instead of 3:30 PM
-# ##
-$GLOBALS['sfg24HourTime'] = false;
-
-# ##
-# Cache parsed form definitions in the page_props table, to improve loading
-# speed
-# ##
-$GLOBALS['sfgCacheFormDefinitions'] = false;
-
-/**
- * The cache type for storing form definitions. This cache is similar in
- * function to the parser cache. Is is used to store form data which is
- * expensive to regenerate, and benefits from having plenty of storage space.
- *
- * If this setting remains at null the setting for the $wgParserCacheType will
- * be used.
- *
- * For available types see $wgMainCacheType.
- */
-$GLOBALS['sfgFormCacheType'] = null;
-
-# ##
-# When modifying red links to potentially point to a form to edit that page,
-# check only the properties pointing to that missing page from the page the
-# user is currently on, instead of from all pages in the wiki.
-# ##
-$GLOBALS['sfgRedLinksCheckOnlyLocalProps'] = false;
-
-# ##
-# Show the "create with form" tab for uncreated templates and categories.
-# ##
-$GLOBALS['sfgShowTabsForAllHelperForms'] = true;
-
-# ##
-# Displays the form above, instead of below, the results, in the
-# Special:RunQuery page.
-# (This is actually an undocumented variable, used by the code.)
-# ##
-$GLOBALS['sfgRunQueryFormAtTop'] = false;
-
-# ##
-# Page properties, used for the API
-# ##
-$GLOBALS['wgPageProps']['formdefinition'] = 'Definition of the semantic form used on the page';
-
-# ##
-# Global variables for Javascript
-# ##
-$GLOBALS['sfgShowOnSelect'] = array();
-$GLOBALS['sfgAutocompleteValues'] = array();
-$GLOBALS['sfgFieldProperties'] = array();
-$GLOBALS['sfgDependentFields'] = array();
-
-/**
- * Minimum number of values in a checkboxes field to show the 'Select all'/'Select none' switches
- */
-$GLOBALS['sfgCheckboxesSelectAllMinimum'] = 10;
-
-// Necessary setting for SMW 1.9+
-$GLOBALS['smwgEnabledSpecialPage'][] = 'RunQuery';
-
diff --git a/SemanticForms/i18n/af.json b/SemanticForms/i18n/af.json
deleted file mode 100644
index 23f791ac..00000000
--- a/SemanticForms/i18n/af.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Arnobarnard",
- "Naudefj",
- "SPQRobin"
- ]
- },
- "sf_createproperty_propname": "Naam:",
- "sf_createproperty_proptype": "Tipe:",
- "templates": "Sjablone",
- "sf_createtemplate_standardformat": "Standaard",
- "sf_createtemplate_deletefield": "Skrap",
- "sf_createform_template": "Sjabloon:",
- "sf_createform_field": "Veld:",
- "sf_createform_inputtypedefault": "(standaard)",
- "sf_createform_hidden": "Verborge",
- "sf_createform_add": "Voeg by",
- "sf_createcategory_name": "Naam:",
- "sf_formedit_remove": "Skrap",
- "sf_formedit_none": "Geen",
- "sf_blank_error": "mag nie leeg wees nie",
- "sf_bad_date_error": "moet 'n geldige datum wees",
- "sf_deletionlog": "Skraplogboek",
- "sf_form_freetextlabel": "Vrye teks"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/aln.json b/SemanticForms/i18n/aln.json
deleted file mode 100644
index 4c525099..00000000
--- a/SemanticForms/i18n/aln.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Mdupont"
- ]
- },
- "semanticforms-desc": "Formularët për shtimin dhe redaktimit të dhënat semantik",
- "specialpages-group-sf_group": "Semantik Format",
- "createproperty": "Krijo një pronë",
- "sf_createproperty_linktoform": "Kjo pronë do të lidhë për faqet që përdorin formën:",
- "sf_createproperty_allowedvalsinput": "Nëse dëshironi që kjo pronë të vetëm të lejohet të ketë vlera të caktuara, të hyjë në listën e vlerave të lejuara, të ndara me presje (nëse vlera përmban një presje, të zëvendësojë atë me \",\"):",
- "sf_createproperty_propname": "Emri i Pronës:",
- "sf_createproperty_proptype": "Tipi:",
- "templates": "Templates",
- "sf_templates_docu": "Në vijim templates ekzistojnë në wiki.",
- "sf_templates_definescat": "definon kategorinë: $1",
- "createtemplate": "Krijo një template",
- "sf_createtemplate_namelabel": "Emri Stampa:",
- "sf_createtemplate_categorylabel": "Kategoria përcaktuar nga template (opsional):",
- "sf_createtemplate_templatefields": "Fushat Template",
- "sf_createtemplate_fieldsdesc": "Për të kanë fushat në këtë shabllon nuk kërkojnë emra fushë, thjesht shkruani indeksi i çdo fushë (p.sh. 1, 2, 3, etj), si emri, në vend të një emri aktual.",
- "sf_createtemplate_fieldname": "Emri Fusha:",
- "sf_createtemplate_displaylabel": "etiketë Display:",
- "sf_createtemplate_semanticproperty": "pronës Semantic:",
- "sf_createtemplate_fieldislist": "Kjo fushë mund të mbajë një listë të vlerave, të ndara me presje",
- "sf_createtemplate_aggregation": "Grumbull",
- "sf_createtemplate_aggregationdesc": "Për të listës, në çdo faqe duke përdorur këtë template, të gjitha faqet që kanë një pronë të caktuar duke treguar atë faqe, specifikoni e pronës përkatëse më poshtë:",
- "sf_createtemplate_aggregationlabel": "Titulli për listën:",
- "sf_createtemplate_outputformat": "Formati Output:",
- "sf_createtemplate_standardformat": "Standard",
- "sf_createtemplate_infoboxformat": "Djathtas-anën Infobox",
- "sf_createtemplate_addfield": "fushë Shto",
- "sf_createtemplate_deletefield": "Fshij",
- "forms": "Formularët",
- "sf_forms_docu": "Format e mëposhtme ekzistojnë në wiki.",
- "createform": "Krijo një formë",
- "sf_createform_nameinput": "Emri Form",
- "sf_createform_nameinputdesc": "(Konventë është që emri të formuar pas shabllonin kryesor ajo krijohet):",
- "sf_createform_template": "Stampa:",
- "sf_createform_templatelabelinput": "Etiketa Template (opsional):",
- "sf_createform_allowmultiple": "Lejo për të shumta (ose zero) raste të këtij template në faqen e krijuar",
- "sf_createform_field": "Fusha:",
- "sf_createform_fieldprop": "Kjo fushë definon pronën $1, e llojit $2.",
- "sf_createform_fieldproplist": "Kjo fushë përcakton një listë të elementëve që kanë pronë $1, e llojit $2.",
- "sf_createform_fieldpropunknowntype": "Kjo fushë definon pronën $1, e llojit të pacaktuar.",
- "sf_createform_additembeforesave": "Ju duhet të shtoni te pakten nje template për këtë formë para se të mund ta ruani atë."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/am.json b/SemanticForms/i18n/am.json
deleted file mode 100644
index 913e7530..00000000
--- a/SemanticForms/i18n/am.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Codex Sinaiticus"
- ]
- },
- "sf_createproperty_propname": "ስም:",
- "sf_createtemplate_standardformat": "መደበኛ",
- "sf_createcategory_name": "ስም:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/an.json b/SemanticForms/i18n/an.json
deleted file mode 100644
index 6d2f31ce..00000000
--- a/SemanticForms/i18n/an.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Juanpabl"
- ]
- },
- "sf_createproperty_propname": "Nombre d'a propiedat:",
- "templates": "Plantillas",
- "sf_createtemplate_deletefield": "Borrar",
- "sf_createform_template": "Plantilla:",
- "sf_createcategory_name": "Nombre d'a categoría:",
- "sf_formedit_createtitle": "Creyar $1: $2",
- "sf_bad_date_error": "ha d'estar una calendata conforme"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ar.json b/SemanticForms/i18n/ar.json
deleted file mode 100644
index 425e55f3..00000000
--- a/SemanticForms/i18n/ar.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Meno25",
- "OsamaK",
- "Uwe",
- "أحمد",
- "زكريا"
- ]
- },
- "semanticforms-desc": "استمارات لإنشاء و تعديل البيانات الدلالية",
- "specialpages-group-sf_group": "استمارات دلالية",
- "createproperty": "أنشئ خاصية",
- "sf-createproperty-with-name": "أنشئ خاصيّة: $1",
- "sf_createproperty_linktoform": "هذه الخاصية ستصل إلى الصفحات التي تستخدم النموذج:",
- "sf_createproperty_allowedvalsinput": "لو كنت تريد أن تحتوي هذه الخاصية فقط على قيم معينة، أدخل قائمة القيم المسموحة، مفصولة بفاصلات (لو أن قيمة ما تحتوي على فاصلة، استبدلها ب \"\\,\"):",
- "sf_createproperty_propname": "اسم الخاصية:",
- "sf_createproperty_proptype": "النوع:",
- "templates": "قوالب",
- "sf_templates_docu": "القوالب التالية موجودة في الويكي.",
- "sf_templates_definescat": "يعرف التصنيف: $1",
- "createtemplate": "أنشئ قالبا",
- "sf-createtemplate-with-name": "أنشئ قالب:$1",
- "sf_createtemplate_namelabel": "اسم القالب:",
- "sf_createtemplate_multipleinstance": "يمكن تضمين هذا القالب عدة مرات في الصفحة.",
- "sf_createtemplate_connectingproperty": "اسم الخصيصة المستخدمة لربط حقول هذا القالب ببقية الصفحة:",
- "sf_createtemplate_categorylabel": "التصنيف معرف بواسطة قالب (اختياري):",
- "sf_createtemplate_templatefields": "حقول القالب",
- "sf_createtemplate_fieldsdesc": "لكي تجعل الحقول في هذا القالب لا تتطلب أسماء حقول، ببساطة أدخل فهرس كل حقل (مثل 1، 2، 3، إلى آخره.) كاسم، بدلا من اسم حقيقي.",
- "sf_createtemplate_fieldname": "اسم الحقل:",
- "sf_createtemplate_displaylabel": "علامة العرض:",
- "sf_createtemplate_semanticproperty": "خاصية سيمانتيك:",
- "sf_createtemplate_fieldislist": "هذا الحقل يمكنه أن يحتوي على قائمة من القيم، مفصولة بفاصلات",
- "sf_createtemplate_aggregation": "أجريجاشن",
- "sf_createtemplate_aggregationdesc": "لعرض، على أية صفحة تستخدم هذا القالب، كل الصفحات التي تمتلك خاصية معينة تشير إلى هذه الصفحة، حدد الخاصية المناسبة بالأسفل:",
- "sf_createtemplate_aggregationlabel": "العنوان للقائمة:",
- "sf_createtemplate_outputformat": "صيغة الخرج:",
- "sf_createtemplate_standardformat": "جدول",
- "sf_createtemplate_infoboxformat": "صندوق معلومات على اليمين",
- "sf_createtemplate_plainformat": "نص عادي",
- "sf_createtemplate_addfield": "أضف حقلًا",
- "sf_createtemplate_deletefield": "حذف",
- "forms": "نماذج",
- "sf_forms_docu": "النماذج التالية موجودة في الويكي.",
- "sf_forminputs_mandatory": "إلزامي",
- "sf_forminputs_restricted": "فقط الإداريون يمكنهم تعديل هذا الإدخال",
- "createform": "أنشئ نموذجا",
- "sf_createform_nameinput": "اسم النموذج",
- "sf_createform_nameinputdesc": "(النموذج تتم تسميته عادة مثل قالبه الرئيسي):",
- "sf_createform_template": "القالب:",
- "sf_createform_templatelabelinput": "علامة القالب (اختياري):",
- "sf_createform_allowmultiple": "السماح بوجود عدة (أو صفر) نسخة من هذا القالب في الصفحة المنشأة",
- "sf_createform_field": "الحقل:",
- "sf_createform_fieldprop": "هذا الحقل يعرف الخاصية $1، من نوع $2.",
- "sf_createform_fieldproplist": "هذا الحقل يعرف قائمة من العناصر التي تمتلك الخاصية $1، من نوع $2.",
- "sf_createform_fieldpropunknowntype": "هذا الحقل يعرف الخاصية $1، من نوع غير محدد.",
- "sf_createform_inputtype": "نوع الإدخال:",
- "sf_createform_inputtypedefault": "(افتراضي)",
- "sf_createform_formlabel": "لصيقة النموذج:",
- "sf_createform_hidden": "مخفي",
- "sf_createform_removetemplate": "أزل القالب",
- "sf_createform_addtemplate": "أضف قالب:",
- "sf_createform_atend": "في النهاية",
- "sf_createform_add": "أضف",
- "sf_createform_choosefield": "اختر حقلا للإضافة",
- "sf_createform_addsection": "أضف قسم",
- "sf_createform_removesection": "أزل قسم",
- "sf_createform_before": "قبل القالب:",
- "sf_createform_additembeforesave": "يجب أن تضيف على الأقل قالبا واحدا إلى هذا النموذج قبل حفظه.",
- "createcategory": "أنشئ تصنيفا",
- "sf_createcategory_name": "اسم التصنيف:",
- "sf_createcategory_defaultform": "النموذج المبدئي:",
- "sf_createcategory_makesubcategory": "اجعل هذا تصنيفا فرعيا لتصنيف آخر (اختياري):",
- "createclass": "أنشئ رتبة",
- "sf_createclass_docu": "أدخل كل البيانات هنا لإنشاء الخواص، القوالب، النماذج والتصنيفات لرتبة واحدة. لمزيد من الخيارات، استخدم الصفحات $1 كبديل.",
- "sf_createclass_allowedvalues": "القيم المسموح بها:",
- "sf_createclass_listofvalues": "قائمة القيم؟",
- "sf_createclass_missingvalues": "لم تملأ جميع الحقول.",
- "sf_createclass_success": "سوف تنشأ الخصائص والقالب والنموذج والتصنيف.",
- "sf_createclass_create": "أنشئ",
- "formstart": "إضافة صفحة مع نموذج",
- "sf_formstart_badform": "خطأ: لا صفحة نموذج تم العثور عليها في $1",
- "sf_formstart_badtitle": "خطأ: \"$1\" عنوان غير صحيح لصفحة.",
- "sf_formstart_docu": "أدخل اسم الصفحة هنا، لكي يتم تعديلها بالنموذج '$1'.\nإذا كانت هذه الصفحة موجودة بالفعل، سيتم إرسالك إلى النموذج لتعديل هذه الصفحة.\nوإلا فسيتم إرسالك إلى النموذج لإضافة الصفحة.",
- "sf_formstart_noform_docu": "أدخل اسم الصفحة هنا، واختر النموذج لتعديلها به.\nإذا كانت هذه الصفحة موجودة بالفعل، سيتم إرسالك إلى النموذج لتعديل هذه الصفحة.\nوإلا فسيتم إرسالك إلى النموذج لإضافة الصفحة.",
- "sf_formstart_createoredit": "أنشئ أو عدل",
- "formedit": "عدل بالنموذج",
- "sf_formedit_createtitle": "أنشئ $1: $2",
- "sf_formedit_createtitlenotarget": "أنشئ $1",
- "sf_formedit_badurl": "هذه هي الصفحة لإضافة البيانات. يجب عليك تحديد اسم صفحة وصفحة هدف في المسار؛ ينبغي أن تبدو ك 'Special:FormEdit?form=<form name>&target=<target page>' أو 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "أو يمكنك إضافة هذه الصفحة بواحدة من النماذج التالية:",
- "sf_formedit_altformsonly": "من فضلك اختر إحدى النماذج التالية لإضافة هذه الصفحة:",
- "sf_formcreate": "أنشئ بنموذج",
- "sf_viewform": "عرض من",
- "sf_editsource": "مصدر التعديل",
- "sf_formedit_edittitle": "عدل $1: $2",
- "sf_formedit_morethanoneform": "'''تحذير:''' أكثر من نموذج مبدئي معرّف لهذه الصفحة.",
- "sf_formedit_formwarning": "تحذير: هذه الصفحة <a href=\"$1\">موجودة بالفعل</a>، لكنها لا تستخدم هذا النموذج.",
- "sf_formedit_remove": "إزالة",
- "sf_formedit_addanother": "إضافة آخر",
- "sf_formedit_none": "لا شيء",
- "sf-autoedit-wait": "إصبر ...",
- "runquery": "شغّل استعلامًا",
- "sf_runquery_badurl": "يجب أن تحدد اسم نموذج في المسار;\nالمسار ينبغي أن يبدو ك 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "تشغيل الاستعلام: $1",
- "sf_runquery_additionalquery": "استعلام إضافي",
- "sf_formerrors_header": "هناك أخطاء في مدخلات نموذجك؛ انظر بالأسفل.",
- "sf_too_few_instances_error": "يجب أن يكون هناك $1 من هذا القالب على الاقل.",
- "sf_too_many_instances_error": "يجب أن يكون هناك $1 من هذا القالب على الأكثر.",
- "sf_blank_error": "لا يمكن أن يكون فارغا",
- "sf_bad_url_error": "يجب أن يحتوي صيغة المسار الصحيحة، بادئا ب 'http'",
- "sf_bad_email_error": "يجب أن يحتوي صيغة عنوان بريد إلكتروني صحيحة",
- "sf_bad_number_error": "يجب أن يكون عددا سليما",
- "sf_bad_date_error": "يجب أن يكون تاريخا سليما",
- "uploadwindow": "نافذة الرفع",
- "sf_deletionlog": "سجل الحذف",
- "sf-preview-header": "معاينة الإستمارة",
- "sf_property_isproperty": "هذه خاصية من نوع $1.",
- "sf_property_linkstoform": "تصل بالصفحات التي تستخدم النموذج $1.",
- "sf_property_allowedvals": "{{PLURAL:$1||القيمة المسموح بها لهذه الخاصية هي|القيمتان المسموح بهما لهذه الخاصية هما|القيم المسموح بها لهذه الخاصية هي}}:",
- "sf_template_docu": "هذا قالب '$1'.\nينبغي استدعاؤه بالصيغة التالية:",
- "sf_template_docufooter": "عدل الصفحة لرؤية نص القالب.",
- "sf_form_docu": "هذا هو نموذج \"$1\".\nلإنشاء صفحة بهذا النموذج، أدخل اسم الصفحة بالأسفل؛\nإذا وُجدت صفحة بهذا الاسم، فسيتم إرسالك إلى نموذج لتعديل تلك الصفحة.",
- "sf_form_freetextlabel": "نص حر",
- "sf_category_hasdefaultform": "هذا التصنيف يستخدم النموذج $1.",
- "sf_category_desc": "هذا $1 تصنيف.",
- "sf_blank_namespace": "رئيسي",
- "right-viewedittab": "أظهر لسان \"{{int:edit}}\" للصفحات التي يمكن تعديلها باستخدام نموذج.",
- "right-editrestrictedfields": "حرّر حقول النموذج المقيّدة"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/arc.json b/SemanticForms/i18n/arc.json
deleted file mode 100644
index 4299b491..00000000
--- a/SemanticForms/i18n/arc.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Basharh",
- "Michaelovic"
- ]
- },
- "sf_createproperty_proptype": "ܐܕܫܐ:",
- "templates": "ܩܠܒ̈ܐ",
- "createtemplate": "ܒܪܝ ܩܠܒܐ",
- "sf_createtemplate_namelabel": "ܫܡܐ ܕܩܠܒܐ:",
- "sf_createtemplate_templatefields": "ܚܩܠ̈ܐ ܕܩܠܒ̈ܐ",
- "sf_createtemplate_fieldname": "ܫܡܐ ܕܚܩܠܐ:",
- "sf_createtemplate_aggregationlabel": "ܟܘܢܝܐ ܕܡܟܬܒܘܬܐ:",
- "sf_createtemplate_deletefield": "ܫܘܦ",
- "forms": "ܕ̈ܘܡܝܐ",
- "sf_createform_template": "ܩܠܒܐ:",
- "sf_createform_field": "ܚܩܠܐ:",
- "sf_createform_hidden": "ܛܘܫܝܐ",
- "sf_createform_removetemplate": "ܠܚܝ ܩܠܒܐ",
- "sf_createform_addtemplate": "ܐܘܣܦ ܩܠܒܐ:",
- "sf_createform_add": "ܐܘܣܦ",
- "sf_createform_before": "ܩܕܡ ܩܠܒܐ:",
- "createcategory": "ܒܪܝ ܣܕܪܐ",
- "sf_createcategory_name": "ܫܡܐ ܕܣܕܪܐ:",
- "sf_formstart_createoredit": "ܒܪܝ ܐܘ ܫܚܠܦ",
- "sf_formedit_createtitle": "ܒܪܝ $1: $2",
- "sf_editsource": "ܫܚܠܦ ܡܒܘܥܐ",
- "sf_formedit_edittitle": "ܫܚܠܦ $1: $2",
- "sf_formedit_remove": "ܠܚܝ ܐܝܟܢܘܬܐ ܗܕܐ",
- "sf_formedit_addanother": "ܐܘܣܦ ܐܚܪܢܐ",
- "sf_formedit_none": "ܠܐ ܡܕܡ",
- "uploadwindow": "ܐܣܩ ܟܘܬܐ",
- "sf_deletionlog": "ܣܓܠܐ ܕܫܝܦܐ",
- "sf_form_freetextlabel": "ܟܬܒܬܐ ܚܐܪܬܐ",
- "sf_blank_namespace": "ܪܫܝܬܐ"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/arz.json b/SemanticForms/i18n/arz.json
deleted file mode 100644
index 708f1f0c..00000000
--- a/SemanticForms/i18n/arz.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ghaly",
- "Meno25",
- "Uwe"
- ]
- },
- "semanticforms-desc": "نماذج لإضافة وتعديل بيانات سيمانتك",
- "specialpages-group-sf_group": "منتديات سيمانتيك",
- "createproperty": "إنشاء خاصية",
- "sf_createproperty_allowedvalsinput": "لو كنت تريد أن تحتوى هذه الخاصية فقط على قيم معينة، أدخل قائمة القيم المسموحة، مفصولة بفاصلات (لو أن قيمة ما تحتوى على فاصلة، استبدلها ب \"\\,\"):",
- "sf_createproperty_propname": "اسم الخاصية:",
- "sf_createproperty_proptype": "النوع:",
- "templates": "قوالب",
- "sf_templates_docu": "القوالب التالية موجودة فى الويكى.",
- "sf_templates_definescat": "يعرف التصنيف: $1",
- "createtemplate": "إنشاء قالب",
- "sf_createtemplate_namelabel": "اسم القالب:",
- "sf_createtemplate_categorylabel": "التصنيف معرف بواسطة قالب (اختياري):",
- "sf_createtemplate_templatefields": "حقول القالب",
- "sf_createtemplate_fieldsdesc": "لكى تجعل الحقول فى هذا القالب لا تتطلب أسماء حقول، ببساطة أدخل فهرس كل حقل (مثل 1، 2، 3، إلى آخره.) كاسم، بدلا من اسم حقيقى.",
- "sf_createtemplate_fieldname": "اسم الحقل:",
- "sf_createtemplate_displaylabel": "علامة العرض:",
- "sf_createtemplate_semanticproperty": "خاصية سيمانتيك:",
- "sf_createtemplate_fieldislist": "هذا الحقل يمكنه أن يحتوى على قائمة من القيم، مفصولة بفاصلات",
- "sf_createtemplate_aggregation": "أجريجاشن",
- "sf_createtemplate_aggregationdesc": "لعرض، على أية صفحة تستخدم هذا القالب، كل الصفحات التى تمتلك خاصية معينة تشير إلى هذه الصفحة، حدد الخاصية المناسبة بالأسفل:",
- "sf_createtemplate_aggregationlabel": "العنوان للقائمة:",
- "sf_createtemplate_outputformat": "صيغة الخرج:",
- "sf_createtemplate_standardformat": "قياسي",
- "sf_createtemplate_infoboxformat": "صندوق معلومات على اليمين",
- "sf_createtemplate_addfield": "إضافة حقل",
- "sf_createtemplate_deletefield": "حذف",
- "forms": "استمارات",
- "sf_forms_docu": "الاستمارات التالية موجودة فى الويكى.",
- "sf_forminputs_mandatory": "إلزامي",
- "sf_forminputs_restricted": "محدد (فقط المستخدمون مديرو النظام يمكنهم تعديله)",
- "createform": "أنشئ استمارة",
- "sf_createform_nameinput": "اسم الاستمارة",
- "sf_createform_template": "القالب:",
- "sf_createform_templatelabelinput": "علامة القالب (اختياري):",
- "sf_createform_allowmultiple": "السماح بوجود عدة (أو صفر) نسخة من هذا القالب فى الصفحة المنشأة",
- "sf_createform_field": "الحقل:",
- "sf_createform_fieldprop": "هذا الحقل يعرف الخاصية $1، من نوع $2.",
- "sf_createform_fieldproplist": "هذا الحقل يعرف قائمة من العناصر التى تمتلك الخاصية $1، من نوع $2.",
- "sf_createform_fieldpropunknowntype": "الحقل ده يعرف الخاصية $1، من نوع مش متحدد.",
- "sf_createform_inputtype": "نوع الإدخال:",
- "sf_createform_inputtypedefault": "(افتراضي)",
- "sf_createform_formlabel": "علامة الاستمارة:",
- "sf_createform_hidden": "مخفي",
- "sf_createform_removetemplate": "إزالة القالب",
- "sf_createform_addtemplate": "إضافة القالب:",
- "sf_createform_atend": "فى النهاية",
- "sf_createform_add": "إضافة",
- "sf_createform_choosefield": "اختر حقلا للإضافة",
- "sf_createform_before": "قبل القالب:",
- "sf_createform_additembeforesave": "يجب أن تضيف على الأقل قالبا واحدا إلى هذه الاستمارة قبل حفظها.",
- "createcategory": "إنشاء تصنيف",
- "sf_createcategory_name": "اسم التصنيف:",
- "sf_createcategory_defaultform": "الاستمارة الافتراضية:",
- "sf_createcategory_makesubcategory": "اجعل هذا تصنيفا فرعيا لتصنيف آخر (اختياري):",
- "formstart": "إضافة صفحة مع نموذج",
- "sf_formstart_badform": "خطأ: لا صفحة استمارة تم العثور عليها فى $1",
- "sf_formstart_docu": "أدخل اسم الصفحة هنا، لكى يتم تعديلها مع الاستمارة '$1'.\nإذا كانت هذه الصفحة موجودة بالفعل، سيتم إرسالك إلى الاستمارة لتعديل هذه الصفحة.\nأما غير ذلك، فسيتم إرسالك إلى الاستمارة لإضافة الصفحة.",
- "sf_formstart_noform_docu": "أدخل اسم الصفحة هنا، واختر الاستمارة لتعديلها معها.\nإذا كانت هذه الصفحة موجودة بالفعل، سيتم إرسالك إلى الاستمارة لتعديل هذه الصفحة.\nأما غير ذلك، فسيتم إرسالك إلى الاستمارة لإضافة الصفحة.",
- "sf_formstart_createoredit": "أضف أو عدل",
- "formedit": "عدل مع الاستمارة",
- "sf_formedit_createtitle": "أضف $1: $2",
- "sf_formedit_badurl": "هذه هى الصفحة لإضافة البيانات. يجب عليك تحديد اسم صفحة وصفحة هدف فى المسار؛ ينبغى أن تبدو ك 'Special:FormEdit?form=<form name>&target=<target page>' أو 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "يمكنك كبديل إضافة هذه الصفحة مع واحد من الاستمارات التالية:",
- "sf_formedit_altformsonly": "من فضلك اختر إحدى الاستمارات التالية لإضافة هذه الصفحة إليها:",
- "sf_viewform": "عرض من",
- "sf_editsource": "مصدر التعديل",
- "sf_formedit_edittitle": "عدل $1: $2",
- "sf_formedit_formwarning": "تحذير: هذه الصفحة <a href=\"$1\">موجودة بالفعل</a>، لكنها لا تستخدم هذه الاستمارة.",
- "sf_formedit_remove": "إزالة",
- "sf_formedit_addanother": "إضافة آخر",
- "sf_formedit_none": "لا شيء",
- "sf_formerrors_header": "هناك أخطاء فى مدخلات استمارتك؛ انظر بالأسفل",
- "sf_blank_error": "لا يمكن أن يكون فارغا",
- "sf_bad_url_error": "يجب أن يحتوى صيغة المسار الصحيحة، بادئا ب 'http'",
- "sf_bad_email_error": "يجب أن يحتوى صيغة عنوان بريد إلكترونى صحيحة",
- "sf_bad_number_error": "يجب أن يكون عددا سليما",
- "sf_bad_date_error": "يجب أن يكون تاريخا سليما",
- "uploadwindow": "نافذة الرفع",
- "sf_property_isproperty": "هذه خاصية من نوع $1.",
- "sf_property_allowedvals": "{{PLURAL:$1||القيمة المسموح بها لهذه الخاصية هي|القيمتان المسموح بهما لهذه الخاصية هما|القيم المسموح بها لهذه الخاصية هي}}:",
- "sf_template_docu": "هذا قالب '$1'.\nينبغى استدعاؤه بالصيغة التالية:",
- "sf_template_docufooter": "عدل الصفحة لرؤية نص القالب.",
- "sf_form_docu": "هذه استمارة '$1'.\nلإضافة صفحة مع هذه الاستمارة، أدخل اسم الصفحة بالأسفل؛\nإذا كانت هناك صفحة موجودة بهذا الاسم، سيتم إرسالك إلى استمارة لتعديل هذه الصفحة.",
- "sf_form_freetextlabel": "نص حر",
- "sf_category_hasdefaultform": "هذا التصنيف يستخدم الاستمارة $1.",
- "sf_category_desc": "هذا $1 تصنيف.",
- "sf_blank_namespace": "رئيسي"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ast.json b/SemanticForms/i18n/ast.json
deleted file mode 100644
index 0d2446a4..00000000
--- a/SemanticForms/i18n/ast.json
+++ /dev/null
@@ -1,198 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Xuacu"
- ]
- },
- "semanticforms-desc": "Formularios p'amestar y editar datos semánticos",
- "specialpages-group-sf_group": "Formularios semánticos",
- "createproperty": "Crear una propiedá",
- "sf-createproperty-with-name": "Crear la propiedá: $1",
- "sf_createproperty_linktoform": "Esta propiedá enllazará a páxines qu'usen el formulariu:",
- "sf_createproperty_allowedvalsinput": "Si quier qu'esta propiedá sólo pueda tener determinaos valores, escriba la llista de valores permitíos, separaos por comes (si un valor contién una coma sustituyala por \"\\,\"):",
- "sf_createproperty_propname": "Nome de la propiedá:",
- "sf_createproperty_proptype": "Tipu:",
- "templates": "Plantíes",
- "sf_templates_docu": "Les siguientes plantíes esisten na wiki.",
- "sf_templates_definescat": "define la categoría: $1",
- "createtemplate": "Crear una plantía",
- "sf-createtemplate-with-name": "Crear plantía:$1",
- "sf_createtemplate_namelabel": "Nome de la plantía:",
- "sf_createtemplate_multipleinstance": "Esta plantía pue incluise múltiples veces na páxina.",
- "sf_createtemplate_connectingproperty": "Nome de la propiedá pa conectar los campos d'esta plantía col restu de la páxina:",
- "sf_createtemplate_categorylabel": "Categoría definida pola plantía (opcional):",
- "sf_createtemplate_templatefields": "Campos de la plantía",
- "sf_createtemplate_fieldsdesc": "Para facer que los campos d'esta plantía yá nun necesiten nomes de campu, simplemente escriba l'índiz de cada campu (p. ex. 1, 2, 3, etc.) como nome, en llugar del nome real.",
- "sf_createtemplate_fieldname": "Nome del campu:",
- "sf_createtemplate_displaylabel": "Amosar la etiqueta:",
- "sf_createtemplate_semanticproperty": "Propiedá semántica:",
- "sf_createtemplate_fieldislist": "Esti campu pue contener una llista de valores separaos por comes",
- "sf_createtemplate_aggregation": "Agregación",
- "sf_createtemplate_aggregationdesc": "Pa llistar, en cualquier páxina qu'use esta plantía, toles páxines que tengan una propiedá determinada qu'apunte a esa páxina, especifique la propiedá apropiada más abaxo:",
- "sf_createtemplate_aggregationlabel": "Títulu pa la llista:",
- "sf_createtemplate_outputformat": "Formatu de salida:",
- "sf_createtemplate_standardformat": "Tabla",
- "sf_createtemplate_infoboxformat": "Cuadru d'información llateral",
- "sf_createtemplate_plainformat": "Testu simple",
- "sf_createtemplate_sectionsformat": "Seiciones",
- "sf_createtemplate_addfield": "Agregar campu",
- "sf_createtemplate_deletefield": "Desaniciar",
- "forms": "Formularios",
- "sf_forms_docu": "Los siguientes formularios yá existen na wiki.",
- "sf_forminputs_mandatory": "Tien d'escribir un valor pa esta entrada",
- "sf_forminputs_restricted": "Sólo los alministradores puen editar esta entrada",
- "sf_forminputs_class": "L'atributu \"class\" de HTML pa esta entrada",
- "sf_forminputs_default": "El valor predetermináu pa esta entrada",
- "sf_forminputs_preload": "Una páxina wiki cuyos conteníos sedrán el valor predetermináu d'esta entrada",
- "sf_forminputs_property": "Una propiedá semántica a la que correspuende esti campu",
- "sf_forminputs_size": "El tamañu d'esti campu de testu, en caráuteres",
- "sf_forminputs_maxlength": "La llonxitú máxima permitida del testu d'esti campu",
- "sf_forminputs_placeholder": "Testu d'ayuda qu'apaez na entrada fasta que l'usuariu fai clic nél",
- "sf_forminputs_uploadable": "Colocar un enllaz \"{{int:upload}}\" al pie d'esta entrada",
- "sf_forminputs_defaultfilename": "El nome de ficheru predetermináu pa los ficheros xubíos",
- "sf_forminputs_rows": "El númberu de fileres d'esta entrada",
- "sf_forminputs_cols": "El númberu de columnes d'esta entrada",
- "sf_forminputs_autogrow": "Configura esta entrada p'aumentar de tamañu si'l testu pasa de les llendes",
- "sf_forminputs_valuesfromproperty": "Una propiedá na que los valores na wiki tienen de ser el conxuntu de valores d'esta entrada",
- "sf_forminputs_valuesfromcategory": "Una categoría na que les páxines tienen de ser el conxuntu de valores d'esta entrada",
- "sf_forminputs_valuesfromnamespace": "Un espaciu de nomes nel que les páxines tienen de ser el conxuntu de valores d'esta entrada",
- "sf_forminputs_valuesfromconcept": "Una páxina de \"conceutu\" de Semantic MediaWiki nel que les páxines tienen de ser el conxuntu de valores d'esta entrada",
- "sf_forminputs_valuesfromurl": "Una URL que contién datos estructuraos que tienen de ser el conxuntu de valores d'esta entrada",
- "sf_forminputs_values": "El conxuntu de valores d'esta entrada, separaos por comes",
- "sf_forminputs_list": "Marcar esta entrada como que contien una llista de valores",
- "sf_forminputs_delimiter": "El separador entre valores de campu, si esta entrada tien una llista d'ellos",
- "sf_forminputs_remoteautocompletion": "Usar el completáu automáticu remotu",
- "sf_forminputs_existingvaluesonly": "Permitir sólo los valores que yá tan na llista",
- "sf_forminputs_showonselect": "Elementos de la páxina a amosar sólo si tan seleicionaos ciertos valores (por exemplu: \"valor1=>div1;valor2=>div2\")",
- "sf_forminputs_listboxsize": "L'altor d'esta caxa de llista, en fileres",
- "sf_forminputs_includetimezone": "Incluir una entrada pa la zona horaria",
- "sf_forminputs_topcategory": "La categoría padre d'esti conxuntu de categoríes (obligatorio)",
- "sf_forminputs_hideroot": "Tapecer la categoría padre",
- "sf_forminputs_depth": "El númberu de niveles de categoríes a amosar nel principiu",
- "sf_forminputs_height": "L'altor d'esta entrada, en pixels",
- "sf_forminputs_width": "L'anchor d'esta entrada, en pixels",
- "createform": "Crear un formulariu",
- "sf-createform-with-name": "Crear formulariu: $1",
- "sf_createform_nameinput": "Nome del formulariu",
- "sf_createform_nameinputdesc": "(de vezu, el formulariu recibe'l mesmu nome que la so plantía principal):",
- "sf_createform_template": "Plantía:",
- "sf_createform_templatelabelinput": "Etiqueta de la plantía (opcional):",
- "sf_createform_allowmultiple": "Permitir múltiples instancies (o cero) d'esta plantía na páxina creada",
- "sf_createform_field": "Campu:",
- "sf_createform_fieldprop": "Esti campu define la propiedá $1, de tipu $2.",
- "sf_createform_fieldproplist": "Este campo define una llista d'elementos que tienen la propiedá $1, de tipu $2.",
- "sf_createform_fieldpropunknowntype": "Esti campu define la propiedá $1, de tipu nun especificáu.",
- "sf_createform_inputtype": "Tipu d'entrada:",
- "sf_createform_inputtypedefault": "(predetermináu)",
- "sf_createform_formlabel": "Etiqueta del formulariu:",
- "sf_createform_hidden": "Tapecíu",
- "sf_createform_removetemplate": "Desaniciar plantía",
- "sf_createform_addtemplate": "Añadir plantía:",
- "sf_createform_atend": "Al final",
- "sf_createform_add": "Amestar",
- "sf_createform_choosefield": "Escueya un campu p'agregar",
- "sf_createform_pagesection": "Seición de la páxina:",
- "sf_createform_addsection": "Amestar seición",
- "sf_createform_removesection": "Desaniciar seición",
- "sf_createform_before": "Antes:",
- "sf_createform_addelements": "Amestar elementos",
- "sf_createform_hiddensection": "Esta entrada ta tapecida nel formulariu",
- "sf_createform_sectionlevel": "Nivel de seición:",
- "sf_createform_sectionname": "Nome de la seición",
- "sf_createform_additembeforesave": "Tien d'amestar polo menos una plantía a esti formulariu antes de guardalu.",
- "sf_createform_otherparameters": "Otros parámetros",
- "createcategory": "Crear una categoría",
- "sf-createcategory-with-name": "Crear categoría:$1",
- "sf_createcategory_name": "Nome de la categoría:",
- "sf_createcategory_defaultform": "Formulariu predetermináu:",
- "sf_createcategory_makesubcategory": "Facer d'esta una subcategoría d'otra categoría (opcional):",
- "createclass": "Crear una clase",
- "sf_createclass_docu": "Escriba tolos datos equí pa crear les propiedaes, plantía, formulariu y categoría pa una única clase. Pa más opciones, use les páxines $1 en llugar d'esta.",
- "sf_createclass_allowedvalues": "Valores permitíos:",
- "sf_createclass_listofvalues": "¿Llista de valores?",
- "sf_createclass_nameinput": "Nome del formulariu:",
- "sf_createclass_missingvalues": "Nun se rellenaron tolos campos obligatorios.",
- "sf_createclass_success": "Crearánse les propiedaes, plantía, formulariu y categoría.",
- "sf_createclass_create": "Crear",
- "formstart": "Agregar páxina con formulariu",
- "sf_formstart_badform": "Error: Nun s'alcontró nengún formulariu na páxina \"$1\".",
- "sf_formstart_badtitle": "Error: \"$1\" ye un títulu de páxina inválidu.",
- "sf_formstart_docu": "Escriba equí'l nome de la páxina a editar col formulariu \"$1\".\nSi esta páxina yá esiste, mandará-y al formulariu pa editar esa páxina.\nD'otra manera, mandará-y al formulariu p'amestar la páxina.",
- "sf_formstart_noform_docu": "Escriba equí'l nome d'una páxina, y seleicione un formulariu col qu'editala.\nSi esta páxina yá esiste, mandará-y al formulariu pa editar esa páxina.\nD'otra manera, mandará-y al formulariu p'amestar la páxina.",
- "sf_formstart_createoredit": "Crear o editar",
- "formedit": "Editar con formulariu",
- "sf_formedit_createtitle": "Crear $1: $2",
- "sf_formedit_createtitlenotarget": "Crear $1",
- "sf_formedit_badurl": "Esta ye la páxina pa editar con un formulariu. Tien d'especificar el nome d'un formulariu y una páxina de destín na URL;\ntendría ser algo como \"Special:FormEdit?form=<nome del formulariu>&target=<páxina de destín>\" o \"Special:FormEdit/<nome del formulariu>/<páxina de destín>\".",
- "sf_formedit_altforms": "Alternativamente pue amestar esta páxina con unu de los siguientes formularios:",
- "sf_formedit_altformsonly": "Seleicione unu d'ente los siguientes formularios p'amestar esta páxina:",
- "sf_formcreate": "Crear con formulariu",
- "sf_viewform": "Ver formulariu",
- "sf_editsource": "Editar la fonte",
- "sf_formedit_edittitle": "Editar $1: $2",
- "sf_formedit_morethanoneform": "'''Avisu:''' Hai más d'un formulariu predetermináu definíu pa esta páxina.",
- "sf_formedit_formwarning": "Avisu: Esta páxina <a href=\"$1\">yá esiste</a>, pero nun usa esti formulariu.",
- "sf_formedit_mismatchedbrackets": "Avisu: Esta páxina contién llaves o corchetes ensin zarrar, de manera que'l formulariu nun xestionará la páxina correutamente. Por favor, <a href=\"$1\">arregle l'error nel testu fonte</a> antes de siguir.",
- "sf_formedit_remove": "Desaniciar esta instancia",
- "sf_formedit_addanotherabove": "Amestar otra instancia per riba d'esta",
- "sf_formedit_addanother": "Amestar otra",
- "sf_formedit_none": "Nenguna",
- "sf_formedit_emptytitle": "Error: Los datos inxertaos dan como resultáu un títulu de páxina baleru.",
- "sf_formedit_hookerror": "Error: Una estensión de MediaWiki torgó'l cambiu de la páxina de destín.",
- "sf_formedit_saveandcontinueediting": "Guardar y siguir",
- "sf_formedit_saveandcontinue_summary": "Guardada usando'l botón \"$1\" del formulariu",
- "sf_formedit_tooltip_saveandcontinueediting": "Guardar los datos y siguir editando",
- "sf_autoedit_anoneditwarning": "Avisu: Nun anició sesión.\nLa direición IP quedará grabada nel historial d'edición d'esta páxina.",
- "sf_autoedit_success": "Cambióse correutamente [[$1]] usando'l formulariu $2.",
- "sf_autoedit_fail": "Falló'l cambiu de [[$1]].",
- "sf_autoedit_notargetspecified": "Nun s'especificó nenguna páxina de destín.",
- "sf_autoedit_invalidtargetspecified": "La páxina de destín especificada, '''$1''', ye inválida.",
- "sf_autoedit_invalidform": "'''$1''' nun ye un formulariu válidu.",
- "sf_autoedit_redirectlimitexeeded": "Superóse'l la llende máxima de redireiciones pal formulariu \"$1\".",
- "sf_autoedit_invalidredirecttarget": "$1 ye un destín de redireición inválidu pal formulariu $2.",
- "sf_autoedit_invalidpreloadspecified": "La páxina de precarga especificada, $1, ye inválida.",
- "sf_autoedit_redlinkexists": "$1 yá esiste.",
- "sf_autoedit_noformfound": "Nun s'especificó nengún formulariu.",
- "sf_autoedit_toomanyformsfound": "Hai más d'un formulariu disponible pa la páxina.",
- "sf_autoedit_readonly": "La base de datos anguaño ta bloquiada pa los cambios. Motivu: $1",
- "sf_autoedit_nosemanticform": "Nun pudo algamase'l formulariu $2 pa la páxina $1. Vea [[{{#special:FormEdit}}/$2/$1]] pa más detalles.",
- "sf_autoedit_summary": "Editáu automáticamente dende la páxina $1.",
- "sf-autoedit-wait": "Espere...",
- "runquery": "Executar la consulta",
- "sf_runquery_badurl": "Tien d'especificar un nome de formulariu na URL;\nla URL tendría de paecese a \"Special:RunQuery/<nome formulariu>\".",
- "sf_runquery_title": "Executar la consulta: $1",
- "sf_runquery_additionalquery": "Consulta adicional",
- "sf_formerrors_header": "Hebo errores coles entraes del formulariu; vea más abaxo.",
- "sf_too_few_instances_error": "Tien d'haber polo menos $1 instancies d'esta plantía.",
- "sf_too_many_instances_error": "Nun tien d'haber más de $1 instancies d'esta plantía.",
- "sf_blank_error": "nun pue tar balero",
- "sf_bad_url_error": "ha tener un formatu d'URL correctu, principiando con 'http'",
- "sf_bad_email_error": "ha tener un formatu válidu de direición de corréu electrónicu",
- "sf_bad_number_error": "tien de ser un númberu válidu",
- "sf_bad_date_error": "tien de ser una data válida",
- "uploadwindow": "Ventana de carga",
- "sf_deletionlog": "Rexistru de desanicios",
- "sf-preview-header": "Vista previa del formulariu",
- "sf-preview-note": "Esti sedrá l'aspectu del formulariu cuando tea n'usu:",
- "sf-pageschemas-pagenameformula": "Fórmula del nome de la páxina:",
- "sf-pageschemas-createtitle": "Títulu del formulariu pa les páxines nueves:",
- "sf-pageschemas-edittitle": "Títulu del formulariu pa les páxines esistentes:",
- "sf-pageschemas-inputtype": "Tipu d'entrada (dexar balero pa definir el predetermináu):",
- "sf-pageschemas-otherparams": "Escriba los nomes de los parámetros y los sos valores como pares clave=valor, separaos por comes (si un valor contién una coma, sustitúyala por \"\\,\"). Por exemplu: $1",
- "sf_property_isproperty": "Esta ye una propiedá de tipu $1.",
- "sf_property_linkstoform": "Enllaza a páxines qu'usen el formulariu $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|El valor permitíu|Los valores permitíos}} pa esta propiedá {{PLURAL:$1|ye|son}}:",
- "sf_template_docu": "Esta ye la plantia \"$1\". Tien de llamase col siguiente formatu:",
- "sf_template_docufooter": "Edite la páxina pa ver el testu de la plantía.",
- "sf_form_docu": "Esti ye'l formulariu \"$1\".\nPa crear una páxina con esti formulariu, escriba más abaxo'l nome de la páxina; si la páxina con esi nome yá esiste, unviará-y a un formulariu pa editar esa páxina.",
- "sf_form_freetextlabel": "Testu llibre",
- "sf_category_hasdefaultform": "Esta categoría usa'l formulariu $1.",
- "sf_category_desc": "Esta ye la categoría $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Ver la llingüeta \"{{int:edit}}\" nes páxines editables con un formulariu",
- "right-editrestrictedfields": "Editar los campos restrinxíos de los formularios",
- "right-createclass": "Crear nueves clases semántiques",
- "action-createclass": "crear nueves clases semántiques",
- "action-editrestrictedfields": "editar los campos restrinxíos de los formularios",
- "action-viewedittab": "ver la llingüeta \"{{int:edit}}\" nes páxines editables con un formulariu"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/avk.json b/SemanticForms/i18n/avk.json
deleted file mode 100644
index 545ddf78..00000000
--- a/SemanticForms/i18n/avk.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Nkosi ya Cabinda",
- "Wikimistusik"
- ]
- },
- "createproperty": "Redura va pilkaca",
- "sf_createproperty_propname": "Yolt :",
- "sf_createproperty_proptype": "Ord :",
- "templates": "Tezeem",
- "sf_templates_docu": "Bata teza yo koe wiki tid.",
- "sf_templates_definescat": "lomatentura : $1",
- "createtemplate": "Redura va teza",
- "sf_createtemplate_namelabel": "Tezayolt :",
- "sf_createtemplate_categorylabel": "Loma tezon tentuna (rotison) :",
- "sf_createtemplate_templatefields": "Tezarapteem",
- "sf_createtemplate_fieldname": "Raptayolt :",
- "sf_createtemplate_displaylabel": "Kralfintara :",
- "sf_createtemplate_semanticproperty": "Sugdalafa pilkaca :",
- "sf_createtemplate_aggregationdesc": "Moe betu bu favesu va bata teza, ta vexalara va kot teliz digis va man pilkot skedas va batu bu, va pilkotanh vleveon bazel :",
- "sf_createtemplate_aggregationlabel": "Vexalavergumvelt :",
- "sf_createtemplate_outputformat": "Divaf breviz",
- "sf_createtemplate_standardformat": "Preksaf",
- "sf_createtemplate_addfield": "Loplekura va rapta",
- "sf_createtemplate_deletefield": "Sulara",
- "forms": "Eruratezeem",
- "sf_forms_docu": "Bata erurateza yo koe wiki tid.",
- "sf_forminputs_restricted": "Irutan (anton ristusik vaon robetar)",
- "createform": "Redura va erurateza",
- "sf_createform_template": "Teza :",
- "sf_createform_templatelabelinput": "Tezakral (rotir) :",
- "sf_createform_field": "Rapta :",
- "sf_createform_fieldprop": "Bata rapta va $1 pilkaca (dem $2 ord) tentur.",
- "sf_createform_fieldproplist": "Bata rapta va reem tentur lize kota ra va $1 pilkot (ke $2 ord) digir.",
- "sf_createform_fieldpropunknowntype": "Bata rapta va $1 pilkaca (ke meruidayan ord) tentur.",
- "sf_createform_inputtype": "Kof ord :",
- "sf_createform_inputtypedefault": "(omavon)",
- "sf_createform_formlabel": "Eruratezakral :",
- "sf_createform_hidden": "Palsen",
- "sf_createform_removetemplate": "Tioltera va teza",
- "sf_createform_addtemplate": "Loplekura va teza :",
- "sf_createform_atend": "Arton",
- "sf_createform_add": "Loplekura",
- "sf_createform_choosefield": "Va goloplekuna rapta kiblal !",
- "sf_createform_before": "Abdi teza :",
- "sf_createform_additembeforesave": "Va tanoya teza ko bata erurateza leon goloplekul abdi da rogiwal.",
- "createcategory": "Redura va loma",
- "sf_createcategory_name": "Yolt :",
- "sf_createcategory_defaultform": "Omavafa erurateza :",
- "sf_createcategory_makesubcategory": "Artazukara va bata loma ton volveyloma (rotison) :",
- "formstart": "Loplekura va bu",
- "sf_formstart_badform": "Rokla : meku eruratezabu trasinu koe $1",
- "sf_formstart_createoredit": "Loplekura ok betara",
- "formedit": "Betara kan erurateza",
- "sf_formedit_createtitle": "Loplekura va $1 : $2",
- "sf_formedit_altformsonly": "Va tanoya vlevefa erurateza goloplekuna ko batu bu vay rebal :",
- "sf_editsource": "Klitabetara",
- "sf_formedit_edittitle": "Betara va $1 : $2",
- "sf_formedit_formwarning": "Obral ! Batu bu (<a href=\"$1\">) ixam tir</a>, vexe va bata erurateza me faver.",
- "sf_formedit_remove": "Dimplekura",
- "sf_formedit_addanother": "Loplekura va arcoba",
- "sf_blank_error": "Me rotir vlardaf",
- "sf_bad_url_error": "Gotir URL brevizanh, tozus kan 'http'",
- "sf_bad_email_error": "Gotir e-mail mane brevizanh",
- "sf_bad_number_error": "gotir va enafa ota",
- "sf_bad_date_error": "gotir enafa evla",
- "sf_property_isproperty": "Tir pilkaca ke $1 ord.",
- "sf_property_allowedvals": "Rictana voda se ke bat pilkovoy tid :",
- "sf_template_docu": "Tir '$1' teza. Kan vlevef breviz zo gonerur :",
- "sf_template_docufooter": "Burupera ta wira va tezacek",
- "sf_form_docu": "Tir '$1' erurateza. Ta koon buloplekura, va buyolt vleveon bazel ; ede milyoltafu bu ixam tir, ta bubetara erurateza zo fintatar.",
- "sf_form_freetextlabel": "Nuyaf krent",
- "sf_category_hasdefaultform": "Bata loma va $1 erurateza faver.",
- "sf_category_desc": "Tir $1 loma.",
- "sf_blank_namespace": "Nelkaxo"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/az.json b/SemanticForms/i18n/az.json
deleted file mode 100644
index b184032b..00000000
--- a/SemanticForms/i18n/az.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Cekli829"
- ]
- },
- "sf_createproperty_proptype": "Tipi:",
- "sf_createtemplate_deletefield": "Sil",
- "sf_createform_template": "Şablon:",
- "sf_createform_hidden": "Gizlədilib",
- "sf_createform_add": "Əlavə et",
- "sf_formedit_none": "Heç biri"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/azb.json b/SemanticForms/i18n/azb.json
deleted file mode 100644
index 58a690f8..00000000
--- a/SemanticForms/i18n/azb.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Mousa"
- ]
- },
- "formedit": "فورم ایله دَییشدیرمک"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/bar.json b/SemanticForms/i18n/bar.json
deleted file mode 100644
index 21b856f7..00000000
--- a/SemanticForms/i18n/bar.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Mucalexx"
- ]
- },
- "formedit": "Mid Formular beorweiten"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/be-tarask.json b/SemanticForms/i18n/be-tarask.json
deleted file mode 100644
index 306c8db5..00000000
--- a/SemanticForms/i18n/be-tarask.json
+++ /dev/null
@@ -1,159 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "EugeneZelenko",
- "Jim-by",
- "Red Winged Duck",
- "Wizardist"
- ]
- },
- "semanticforms-desc": "Формы для даданьня і рэдагаваньня сэмантычных зьвестак",
- "specialpages-group-sf_group": "Сэмантычныя формы",
- "createproperty": "Стварыць уласьцівасьць",
- "sf_createproperty_linktoform": "Гэта ўласьцівасьць будзе спасылацца на старонкі, якія выкарыстоўваюць форму:",
- "sf_createproperty_allowedvalsinput": "Калі Вы жадаеце, каб гэта ўласьцівасьць мела толькі некаторыя значэньні, увядзіце сьпіс дазволеных значэньняў, падзелены коскамі (калі значэньне ўтрымлівае коску, замяніце яе на «\\,»):",
- "sf_createproperty_propname": "Назва ўласьцівасьці:",
- "sf_createproperty_proptype": "Тып:",
- "templates": "Шаблёны",
- "sf_templates_docu": "У {{GRAMMAR:месны|{{SITENAME}}}} існуюць наступныя шаблёны.",
- "sf_templates_definescat": "вызначае катэгорыю: $1",
- "createtemplate": "Стварыць шаблён",
- "sf_createtemplate_namelabel": "Назва шаблёну:",
- "sf_createtemplate_categorylabel": "Катэгорыя, якая вызначаецца шаблёнам (неабавязкова):",
- "sf_createtemplate_templatefields": "Палі шаблёну",
- "sf_createtemplate_fieldsdesc": "Палі гэтага шаблёну болей не патрабуюць назваў, проста ўвядзіце індэкс кожнага поля (напрыклад, 1, 2, 3 і г.д.) замест назваў.",
- "sf_createtemplate_fieldname": "Назва поля:",
- "sf_createtemplate_displaylabel": "Надпіс, які будзе паказвацца:",
- "sf_createtemplate_semanticproperty": "Сэмантычная ўласьцівасьць:",
- "sf_createtemplate_fieldislist": "Гэта поле можа ўтрымліваць сьпіс значэньняў, падзеленых коскамі",
- "sf_createtemplate_aggregation": "Злучэньне",
- "sf_createtemplate_aggregationdesc": "Каб выводзіць на любую старонку, якая выкарыстоўвае гэты шаблён, усе старонкі, у якіх гэтая ўласьцівасьць спасылаецца на гэтую старонку, пазначце адпаведную ўласьцівасьць ніжэй:",
- "sf_createtemplate_aggregationlabel": "Назва сьпісу:",
- "sf_createtemplate_outputformat": "Фармат вываду:",
- "sf_createtemplate_standardformat": "Стандартны",
- "sf_createtemplate_infoboxformat": "Інфармацыйная панэль справа",
- "sf_createtemplate_addfield": "Дадаць поле",
- "sf_createtemplate_deletefield": "Выдаліць",
- "forms": "Формы",
- "sf_forms_docu": "У {{GRAMMAR:месны|{{SITENAME}}}} існуюць наступныя формы.",
- "sf_forminputs_mandatory": "Абавязковая",
- "sf_forminputs_restricted": "Рэдагаваньне дазволенае толькі адміністратарам",
- "sf_forminputs_class": "HTML-атрыбут «class» для гэтага поля",
- "sf_forminputs_default": "Значэньне па змоўчваньні для гэтага ўводу",
- "sf_forminputs_preload": "Старонка {{GRAMMAR:родны|{{SITENAME}}}}, зьмест якой стане значэньнем па змоўчваньні для гэтага ўводу",
- "sf_forminputs_property": "Сэмантычная ўласьцівасьць, з якой зьвязанае гэтае поле",
- "sf_forminputs_size": "Памер гэтага тэкставага поля ў сымбалях",
- "sf_forminputs_maxlength": "Максымальна дазволеная даўжыня тэксту ў гэтым полі",
- "sf_forminputs_uploadable": "Разьмясьціць спасылку «Загрузіць файл» пасьля гэтага ўводу",
- "sf_forminputs_defaultfilename": "Назва па змоўчваньні для загружаемых файлаў",
- "sf_forminputs_rows": "Колькасьць радкоў для гэтага ўводу",
- "sf_forminputs_cols": "Колькасьць слупкоў для гэтага ўводу",
- "sf_forminputs_autogrow": "Павялічваць памер гэтага ўводу, калі тэкст перавысіць яго памеры",
- "sf_forminputs_valuesfromproperty": "Уласьцівасьць, значэньне якой у {{GRAMMAR:месны|{{SITENAME}}}} павінны быць уваходным для гэтага ўводу",
- "sf_forminputs_valuesfromcategory": "Катэгорыя, старонкі якой павінны быць уваходнымі для гэтага ўводу",
- "sf_forminputs_valuesfromnamespace": "Прастора назваў, старонкі якой павінны быць уваходнымі для гэтага ўводу",
- "sf_forminputs_valuesfromconcept": "«Канцэптуальная» старонка Semantic MediaWiki, старонкі якой павінны быць уваходнымі для гэтага ўводу",
- "sf_forminputs_valuesfromurl": "URL-адрас, які ўтрымлівае структурныя зьвесткі, якія павінны быць уваходнымі для гэтага ўводу",
- "sf_forminputs_values": "Набор значэньняў для гэтага ўводу, падзеленых коскамі",
- "sf_forminputs_list": "Пазначыць гэты ўвод, як утрымліваючы сьпіс значэньняў",
- "sf_forminputs_delimiter": "Разьдзяляльнік паміж значэньнямі ў палі, калі гэты ўвод утрымлівае іх сьпіс",
- "sf_forminputs_remoteautocompletion": "Выкарыстоўваць аддаленае аўтаматычнае запаўненьне",
- "sf_forminputs_existingvaluesonly": "Дазваляе толькі значэньні існуючыя у сьпісе",
- "sf_forminputs_showonselect": "Элемэнты старонкі для паказу, толькі ў выпадку калі выбраныя некаторыя значэньні (напрыклад: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "Вышыня гэтага сьпісу, у радках",
- "sf_forminputs_includetimezone": "Уключае ўвод для часовага пасу",
- "sf_forminputs_topcategory": "Бацькоўская катэгорыя гэтага набору катэгорыяў (абавязкова)",
- "sf_forminputs_hideroot": "Схаваць бацькоўскую катэгорыю",
- "sf_forminputs_height": "Вышыня гэтага ўводу ў піксэлях",
- "sf_forminputs_width": "Шырыня гэтага ўводу ў піксэлях",
- "createform": "Стварыць форму",
- "sf_createform_nameinput": "Назва формы",
- "sf_createform_nameinputdesc": "(форма звычайна атрымлівае тую ж назву, што і яе асноўны шаблён):",
- "sf_createform_template": "Шаблён:",
- "sf_createform_templatelabelinput": "Пазнака шаблёну (неабавязкова):",
- "sf_createform_allowmultiple": "Дазволіць некалькі (ці нуль) экзэмпляраў гэтага шаблёну ў ствараемай старонцы",
- "sf_createform_field": "Поле:",
- "sf_createform_fieldprop": "Гэта поле вызначае ўласьцівасьць $1 тыпу $2.",
- "sf_createform_fieldproplist": "Гэта поле вызначае сьпіс элемэнтаў, якія маюць уласьцівасьць $1 тыпу $2.",
- "sf_createform_fieldpropunknowntype": "Гэта поле вызначае ўласьцівасьць $1 непазначанага тыпу.",
- "sf_createform_inputtype": "Уваходны тып:",
- "sf_createform_inputtypedefault": "(па змоўчваньні)",
- "sf_createform_formlabel": "Пазнака формы:",
- "sf_createform_hidden": "Схаваная",
- "sf_createform_removetemplate": "Выдаліць шаблён",
- "sf_createform_addtemplate": "Дадаць шаблён:",
- "sf_createform_atend": "У канцы",
- "sf_createform_add": "Дадаць",
- "sf_createform_choosefield": "Выберыце поле для даданьня",
- "sf_createform_before": "Перад шаблёнам:",
- "sf_createform_additembeforesave": "Вам трэба дадаць хаця бы адзін шаблён да гэтай формы для таго, каб яе можна было захаваць.",
- "createcategory": "Стварыць катэгорыю",
- "sf_createcategory_name": "Назва катэгорыі:",
- "sf_createcategory_defaultform": "Форма па змоўчваньні:",
- "sf_createcategory_makesubcategory": "Зрабіць гэта падкатэгорыяй іншай катэгорыі (неабавязкова):",
- "createclass": "Стварыць кляс",
- "sf_createclass_docu": "Для стварэньня ўласьцівасьцяў, шаблёнаў, форм і катэгорый аднаго кляса, увядзіце тут ўсе зьвесткі. Для дадатковых магчымасьцяў, выкарыстоўвайце старонкі $1.",
- "sf_createclass_allowedvalues": "Дазволеныя значэньні:",
- "sf_createclass_listofvalues": "Сьпіс значэньняў?",
- "sf_createclass_nameinput": "Назва формы:",
- "sf_createclass_missingvalues": "Ня ўсе неабходныя палі былі запоўнены.",
- "sf_createclass_success": "Будуць створаны ўласьцівасьці, шаблёны, формы і катэгорыі.",
- "sf_createclass_create": "Стварыць",
- "formstart": "Дадаць старонку з формай",
- "sf_formstart_badform": "Памылка: ня знойдзена старонка формы на $1",
- "sf_formstart_badtitle": "Памылка: «$1» — няслушная назва для старонкі.",
- "sf_formstart_docu": "Увядзіце тут назву старонкі, якую трэба рэдагаваць з дапамогай формы '$1'.\nКалі гэта старонка ўжо існуе, Вы будзеце накіраваны на форму рэдагаваньня старонкі.\nУ адваротным выпадку, Вы будзеце накіраваны на форму даданьня старонкі.",
- "sf_formstart_noform_docu": "Увядзіце тут назву старонкі і выберыце форму, з дапамогай якой Вы будзеце рэдагаваць старонку.\nКалі гэта старонка ўжо існуе, Вы будзеце накіраваны на форму рэдагаваньня старонкі.\nУ адваротным выпадку, Вы будзеце накіраваны на форму даданьня старонкі.",
- "sf_formstart_createoredit": "Стварыць альбо рэдагаваць",
- "formedit": "Рэдагаваць з дапамогай формы",
- "sf_formedit_createtitle": "Стварыць $1: $2",
- "sf_formedit_createtitlenotarget": "Стварыць $1",
- "sf_formedit_badurl": "Гэтая старонка для рэдагаваньня праз форму. Вам неабходна пазначыць назву формы і мэтавую старонку ў URL-адрасе;\nгэта павінна выглядаць наступным чынам: 'Special:FormEdit?form=<назва формы>&target=<мэтавая старонка>' альбо 'Special:FormEdit/<назва формы>/<мэтавая старонка>'.",
- "sf_formedit_altforms": "Замест гэтага Вы можаце дадаць старонку з дапамогай наступных формаў:",
- "sf_formedit_altformsonly": "Калі ласка, выберыце адну з наступных формаў для даданьня гэтай старонкі:",
- "sf_formcreate": "Стварыць з дапамогай формы",
- "sf_viewform": "Паказаць форму",
- "sf_editsource": "Рэдагаваць крыніцу",
- "sf_formedit_edittitle": "Рэдагаваньне $1: $2",
- "sf_formedit_morethanoneform": "Увага: для гэтай старонкі вызначана па змоўчваньні больш за адну форму.",
- "sf_formedit_formwarning": "Увага: старонка <a href=\"$1\">ужо існуе</a>, але яна не выкарыстоўвае гэтую форму.",
- "sf_formedit_remove": "Выдаліць",
- "sf_formedit_addanother": "Дадаць іншую",
- "sf_formedit_none": "Нічога",
- "sf_formedit_emptytitle": "Памылка: уведзеныя выніковыя зьвесткі ў пустой назьве старонкі.",
- "sf_formedit_hookerror": "Памылка: пашырэньне MediaWiki не дазваляе зьмены мэтавай старонкі.",
- "sf_formedit_saveandcontinueediting": "Захаваць і працягваць",
- "sf_formedit_tooltip_saveandcontinueediting": "Захаваць зьвесткі і працягваць рэдагаваньне",
- "sf_autoedit_anoneditwarning": "Папярэджаньне: Вы не ўвайшлі ў сыстэму. Ваш IP-адрас будзе запісаны ў гісторыі гэтай старонкі.",
- "sf_autoedit_success": "Пасьпяхова зьменены [[$1]] з дапамогай формы $2.",
- "sf_autoedit_notargetspecified": "Не пазначаная мэтавая старонка.",
- "sf_autoedit_noformfound": "Форма не пазначаная.",
- "sf_autoedit_toomanyformsfound": "Для старонкі даступна болей чым адна форма.",
- "sf_autoedit_readonly": "У цяперашні момант база зьвестак заблякаваная для зьменаў. Прычына: $1",
- "sf_autoedit_nosemanticform": "Немагчыма атрымаць форму $2 для старонкі $1. Глядзіце падрабязнасьці на [[{{#special:FormEdit}}/$2/$1]].",
- "runquery": "Выканаць запыт",
- "sf_runquery_badurl": "Вам неабходна пазначыць назву формы ў URL-адрасе;\nURL-адрас павінен мець выгляд 'Special:RunQuery/<назва формы>'.",
- "sf_runquery_title": "Выканаць запыт: $1",
- "sf_runquery_additionalquery": "Дадатковы запыт",
- "sf_formerrors_header": "Знойдзеныя памылкі ў Вашай форме ўводу; глядзіце ніжэй",
- "sf_blank_error": "ня можа быць пустым",
- "sf_bad_url_error": "павінна мець слушны фармат URL, пачынацца з 'http'",
- "sf_bad_email_error": "павінна мець слушны фармат адрасу электроннай пошты",
- "sf_bad_number_error": "павінна быць слушным лікам",
- "sf_bad_date_error": "павінна быць слушнай датай",
- "uploadwindow": "Акно загрузкі",
- "sf_deletionlog": "Журнал выдаленьняў",
- "sf_property_isproperty": "Гэта ўласьцівасьць тыпу $1.",
- "sf_property_linkstoform": "Гэта ўласьцівасьць спасылаецца на старонкі, якія выкарыстоўваюць форму $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Дазволенае значэньне|Дазволеныя значэньні}} для гэтай уласьцівасьці:",
- "sf_template_docu": "Гэта шаблён '$1', які павінен выклікацца наступным чынам:",
- "sf_template_docufooter": "Рэдагуйце старонку, каб убачыць тэкст шаблёну.",
- "sf_form_docu": "Гэта форма «$1».\nКаб стварыць старонку з гэтай формай, увядзіце назву старонкі ніжэй;\nкалі старонка з такой назвай ужо існуе, Вы будзеце накіраваны на форму рэдагаваньня гэтай старонкі.",
- "sf_form_freetextlabel": "Свабодны тэкст",
- "sf_category_hasdefaultform": "Гэта катэгорыя выкарыстоўвае форму $1.",
- "sf_category_desc": "Гэта катэгорыя $1.",
- "sf_blank_namespace": "Галоўная",
- "right-viewedittab": "прагляд закладак «Рэдагаваць» для старонак, якія можна рэдагаваць праз форму",
- "right-editrestrictedfields": "рэдагаваньне абмежаваных палёў форм",
- "right-createclass": "стварэньне новых сэмантычных клясаў"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/be.json b/SemanticForms/i18n/be.json
deleted file mode 100644
index 2ecbdbd9..00000000
--- a/SemanticForms/i18n/be.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Тест"
- ]
- },
- "sf_createproperty_proptype": "Тып:",
- "templates": "Шаблоны",
- "sf_createform_template": "Шаблон:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/bg.json b/SemanticForms/i18n/bg.json
deleted file mode 100644
index 93392eff..00000000
--- a/SemanticForms/i18n/bg.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "DCLXVI"
- ]
- },
- "specialpages-group-sf_group": "Семантични формуляри",
- "sf_createproperty_propname": "Име:",
- "sf_createproperty_proptype": "Вид:",
- "templates": "Шаблони",
- "sf_templates_docu": "Следните шаблони съществуват в уикито.",
- "sf_templates_definescat": "дефинира категория: $1",
- "createtemplate": "Създаване на шаблон",
- "sf_createtemplate_namelabel": "Име на шаблон:",
- "sf_createtemplate_categorylabel": "Категория, дефинирана от шаблон (незадължително):",
- "sf_createtemplate_fieldname": "Име на полето:",
- "sf_createtemplate_semanticproperty": "Семантично свойство:",
- "sf_createtemplate_fieldislist": "Това поле може да съдържа само списък със стойности, разделени със запетаи",
- "sf_createtemplate_aggregationlabel": "Заглавие за списъка:",
- "sf_createtemplate_outputformat": "Изходен формат:",
- "sf_createtemplate_standardformat": "Стандартен",
- "sf_createtemplate_infoboxformat": "Инфокутия в дясно",
- "sf_createtemplate_addfield": "Добавяне на поле",
- "sf_createtemplate_deletefield": "Изтриване",
- "forms": "Формуляри",
- "sf_forms_docu": "В уикито съществуват следните формуляри.",
- "createform": "Създаване на формуляр",
- "sf_createform_template": "Шаблон:",
- "sf_createform_field": "Поле:",
- "sf_createform_inputtypedefault": "(по подразбиране)",
- "sf_createform_removetemplate": "Премахване на шаблон",
- "sf_createform_addtemplate": "Добавяне на шаблон:",
- "sf_createform_atend": "В края",
- "sf_createform_add": "Добавяне",
- "sf_createform_choosefield": "Избор на поле за добавяне",
- "sf_createform_before": "Преди шаблон:",
- "sf_createform_additembeforesave": "Преди да бъде възможно съхраняването на формуляра е необходимо в него да бъде добавен поне един шаблон.",
- "createcategory": "Създаване на категория",
- "sf_createcategory_name": "Име:",
- "sf_createcategory_defaultform": "Формуляр по подразбиране:",
- "formstart": "Добавяне на страница с формуляр",
- "sf_formstart_createoredit": "Добавяне или редактиране",
- "formedit": "Редактиране с формуляр",
- "sf_formedit_createtitle": "Добавяне на $1: $2",
- "sf_formedit_altformsonly": "Изберете един от следните формуляри за добавяне на страницата:",
- "sf_viewform": "Преглед на формуляра",
- "sf_editsource": "Редактиране на източника",
- "sf_formedit_edittitle": "Редактиране на $1: $2",
- "sf_formedit_formwarning": "Внимание: Тази страница <a href=\"$1\">вече съществува</a>, но не използва този формуляр.",
- "sf_formedit_remove": "Премахване",
- "sf_formedit_none": "Няма",
- "sf_blank_error": "не може да бъде празно",
- "sf_bad_url_error": "необходимо е да съдържа правилния URL формат, започващ с 'http'",
- "sf_bad_email_error": "необходимо е да съдържа валиден формат за е-поща",
- "sf_bad_number_error": "необходимо е да е валидно число",
- "sf_bad_date_error": "необходимо е да бъде валидна дата",
- "uploadwindow": "Прозорец за качване",
- "sf_template_docu": "Това е шаблонът '$1'. Той следва да бъде извикван в следния формат:",
- "sf_template_docufooter": "Редактирането на страницата ще покаже текста на шаблона.",
- "sf_form_docu": "Това е формулярът '$1\".\nЗа добавяне на страница с този формуляр, необходимо е да се въведе името на страницата по-долу;\nако страница с това име вече съществува, ще бъде отворен формуляр за редактиране на страницата.",
- "sf_form_freetextlabel": "Свободен текст",
- "sf_category_hasdefaultform": "Тази категория използва формуляра $1.",
- "sf_category_desc": "Това е категорията $1."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/bjn.json b/SemanticForms/i18n/bjn.json
deleted file mode 100644
index c9a22f80..00000000
--- a/SemanticForms/i18n/bjn.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "J Subhi"
- ]
- },
- "sf_formedit_createtitle": "Ma-ulah $1: $2",
- "sf_formedit_createtitlenotarget": "Ma-ulah $1"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/bn.json b/SemanticForms/i18n/bn.json
deleted file mode 100644
index cffb70b6..00000000
--- a/SemanticForms/i18n/bn.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Aftab1995",
- "Bellayet",
- "Wikitanvir",
- "Zaheen"
- ]
- },
- "sf_createproperty_proptype": "ধরন:",
- "templates": "টেমপ্লেটসমূহ",
- "sf_templates_docu": "উইকিটিতে নিচের টেমপ্লেটগুলো রয়েছে।",
- "sf_createtemplate_fieldname": "ফিল্ডের নাম:",
- "sf_createtemplate_aggregationlabel": "তালিকার শিরোনাম:",
- "sf_createtemplate_outputformat": "আউটপুটের বিন্যাস:",
- "sf_createtemplate_standardformat": "ছক",
- "sf_createtemplate_infoboxformat": "পার্শ্ব তথ্যছক",
- "sf_createtemplate_plainformat": "সাধারণ লেখা",
- "sf_createtemplate_addfield": "ফিল্ড যোগ",
- "sf_createtemplate_deletefield": "অপসারণ",
- "forms": "ফরম",
- "sf_forms_docu": "উইকিটিতে নিচের ফর্মগুলো রয়েছে।",
- "createform": "ফর্ম তৈরি করুন",
- "sf_createform_nameinput": "ফর্মের নাম",
- "sf_createform_template": "টেম্পলেট:",
- "sf_createform_field": "ফিল্ড:",
- "sf_createform_hidden": "লুকায়িত",
- "sf_createform_removetemplate": "টেমপ্লেট অপসারণ",
- "sf_createform_addtemplate": "টেমপ্লেট যোগ:",
- "createcategory": "একটি বিষয়শ্রেণী তৈরি করুন",
- "sf-createcategory-with-name": "বিষয়শ্রেণী তৈরি: $1",
- "sf_createcategory_name": "বিষয়শ্রেণীর নাম:",
- "sf_createcategory_defaultform": "পূর্বনির্ধারিত ফর্ম:",
- "sf_createclass_create": "তৈরি করো",
- "sf_formstart_createoredit": "তৈরি অথবা সম্পাদনা করুন",
- "formedit": "ফর্মসহ সম্পাদনা",
- "sf_formedit_createtitle": "তৈরি করুন $1: $2",
- "sf_formedit_createtitlenotarget": "তৈরি করুন $1",
- "sf_viewform": "ফর্ম দেখাও",
- "sf_editsource": "উৎস সম্পাদনা",
- "sf_formedit_edittitle": "সম্পাদনা $1: $2",
- "sf_formedit_remove": "অপসারণ",
- "sf_formedit_addanother": "অপর একটি যোগ করুন",
- "sf_formedit_none": "কোনটিই নয়",
- "sf_runquery_additionalquery": "অতিরিক্ত কোয়েরি",
- "sf_deletionlog": "অপসারণ লগ",
- "sf_form_freetextlabel": "মুক্ত লেখা",
- "sf_blank_namespace": "প্রধান"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/br.json b/SemanticForms/i18n/br.json
deleted file mode 100644
index ad75b064..00000000
--- a/SemanticForms/i18n/br.json
+++ /dev/null
@@ -1,124 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Fohanno",
- "Fulup",
- "Y-M D"
- ]
- },
- "semanticforms-desc": "Furmskrid evit ouzhpennañ hag aozañ roadennoù semantek",
- "specialpages-group-sf_group": "Furmskridoù semantek",
- "createproperty": "Krouiñ ur perzh",
- "sf_createproperty_linktoform": "Ar perzh-mañ a liammo ouzh ar pajennoù a implij ar furmskrid :",
- "sf_createproperty_propname": "Anv ar perzh :",
- "sf_createproperty_proptype": "Seurt :",
- "templates": "Patromoù",
- "sf_templates_docu": "Ar patromoù-mañ zo anezho dija er wiki.",
- "sf_templates_definescat": "termeniñ a ra ar rummad : $1",
- "createtemplate": "Sevel ur patrom",
- "sf-createtemplate-with-name": "Krouiñ ar patrom : $1",
- "sf_createtemplate_namelabel": "Anv ar patrom :",
- "sf_createtemplate_categorylabel": "Rummad termenet gant ar patrom-mañ (diret) :",
- "sf_createtemplate_templatefields": "Maeziennoù skouer",
- "sf_createtemplate_fieldname": "Anv ar vaezienn :",
- "sf_createtemplate_displaylabel": "Tikedenn diskwel :",
- "sf_createtemplate_semanticproperty": "Perzh semantek :",
- "sf_createtemplate_fieldislist": "Er vaezienn-mañ e c'hall bezañ ur roll talvoudoù, dispartiet gant virgulennoù",
- "sf_createtemplate_aggregation": "Skolveuriadur",
- "sf_createtemplate_aggregationlabel": "Titl evit al listenn :",
- "sf_createtemplate_outputformat": "Furmad ezvont :",
- "sf_createtemplate_standardformat": "Taolenn",
- "sf_createtemplate_infoboxformat": "Infobox kostez",
- "sf_createtemplate_sectionsformat": "Rannoù",
- "sf_createtemplate_addfield": "Ouzhpennañ ur vaezienn",
- "sf_createtemplate_deletefield": "Diverkañ",
- "forms": "Furmskridoù",
- "sf_forms_docu": "Ar furmskridoù-mañ zo anezho er wiki.",
- "sf_forminputs_mandatory": "Rekis",
- "sf_forminputs_restricted": "N'hall an enmont-mañ bezañ kemmet nemet gant merourien",
- "sf_forminputs_size": "Ment ar vaezienn desten-mañ, en arouezennoù",
- "sf_forminputs_existingvaluesonly": "Aotren an talvoudoù zo war ar roll hepken",
- "createform": "Krouiñ ur furmskrid",
- "sf_createform_nameinput": "Anv ar furmskrid",
- "sf_createform_nameinputdesc": "(ar boaz eo envel ar furmskrid diouzh anv e batrom pennañ) :",
- "sf_createform_template": "Patrom :",
- "sf_createform_templatelabelinput": "Tikedenn patrom (diret) :",
- "sf_createform_allowmultiple": "Aotren a ra eiladoù eus ar patrom-mañ (pe hini ebet) er bajenn grouet",
- "sf_createform_field": "Maezienn :",
- "sf_createform_fieldprop": "Ar vaezienn-mañ a dermen ar perzh $1, eus ar seurt $2.",
- "sf_createform_inputtype": "Doare moned :",
- "sf_createform_inputtypedefault": "(dre ziouer)",
- "sf_createform_formlabel": "Label er furmskrid :",
- "sf_createform_hidden": "Kuzhet",
- "sf_createform_removetemplate": "Lemel ar patrom",
- "sf_createform_addtemplate": "Ouzhpennañ ur patrom :",
- "sf_createform_atend": "En dibenn",
- "sf_createform_add": "Ouzhpennañ",
- "sf_createform_choosefield": "Dibab ur vaezienn da ouzhpennañ",
- "sf_createform_before": "A-raok ar patrom :",
- "sf_createform_additembeforesave": "Ret eo deoc'h ouzhpennañ ur patrom da nebeutañ d'ar furmskrid-mañ a-raok gallout e enrollañ.",
- "createcategory": "Sevel ur rummad",
- "sf_createcategory_name": "Anv ar rummad :",
- "sf_createcategory_defaultform": "Furmskrid dre ziouer :",
- "sf_createcategory_makesubcategory": "Ober eus hemañ un isrummad eus ur rummad all (diret) :",
- "createclass": "Krouiñ ur c'hlas",
- "sf_createclass_allowedvalues": "Talvoudennoù aotreet :",
- "sf_createclass_listofvalues": "Roll talvoudennoù ?",
- "sf_createclass_nameinput": "Anv ar furmskrid :",
- "sf_createclass_missingvalues": "N'eo ket bet leuniet an holl vaeziennoù ret.",
- "sf_createclass_success": "Krouet e vo ar perzhioù, ar patrom ar furmskrid hag ar rummad.",
- "sf_createclass_create": "Krouiñ",
- "formstart": "Ouzhpennañ ur bajenn gant ur furmskrid",
- "sf_formstart_badform": "Fazi : n'eus bet kavet pajenn furmskrid ebet en $1.",
- "sf_formstart_badtitle": "Fazi : « $1 » n'eo ket un titl reizh evit ur bajenn.",
- "sf_formstart_createoredit": "Krouiñ pe kemmañ",
- "formedit": "Aozañ gant ur furmskrid",
- "sf_formedit_createtitle": "Krouiñ $1 : $2",
- "sf_formedit_createtitlenotarget": "Krouiñ $1",
- "sf_formedit_altforms": "A-hend-all e c'hallit ouzhpennañ ar bajenn-mañ gant unan eus ar furmskridoù da-heul :",
- "sf_formedit_altformsonly": "Diuzit unan eus ar furmskridoù-mañ evit ouzhpennañ ar bajenn-mañ :",
- "sf_formcreate": "Krouiñ gant ur furmskrid",
- "sf_viewform": "Gwelet ar furmskrid",
- "sf_editsource": "Kemmañ ar vammenn",
- "sf_formedit_edittitle": "Aozañ $1: $2",
- "sf_formedit_morethanoneform": "'''Evezh : ''' Ouzhpenn ur furmskrid dre ziouer zo termenet evit ar bajenn-mañ.",
- "sf_formedit_formwarning": "Evezh : Ar bajenn-mañ <a href=\"$1\">zo anezhi dija</a>, met ne implij ket ar furmskrid-mañ.",
- "sf_formedit_remove": "Tennañ",
- "sf_formedit_addanother": "Ouzhpennañ unan all",
- "sf_formedit_none": "Hini ebet",
- "sf_formedit_saveandcontinueediting": "Enrollañ ha kenderc'hel",
- "sf_formedit_tooltip_saveandcontinueediting": "Enrollañ ar roadennoù ha kenderc'hel da zegas kemmoù",
- "sf_autoedit_anoneditwarning": "'''Diwallit :''' N'oc'h ket kevreet. Ho chomlec'h IP eo a vo enrollet war istor kemmoù ar bajenn-mañ.",
- "sf_autoedit_success": "Kemmet ervat [[$1]] en ur ober gant furmskrid $2.",
- "sf_autoedit_invalidform": "N'eo ket $1 ur furm reizh.",
- "sf_autoedit_redlinkexists": "$1 zo anezhañ c'hoazh.",
- "sf-autoedit-wait": "Gortozit...",
- "runquery": "Seveniñ ar reked",
- "sf_runquery_badurl": "Ret eo deoc'h diferañ un anv furmskrid en URL ;\nDleet e vefe d'an URL bezañ evel « Special:RunQuery/<anv ar furmskrid> ».",
- "sf_runquery_title": "Seveniñ ar reked : $1",
- "sf_runquery_additionalquery": "Reked ouzhpenn",
- "sf_formerrors_header": "Fazioù zo er furmskrid; gw. amañ dindan",
- "sf_blank_error": "n'hall ket chom goullo",
- "sf_bad_url_error": "a rank kaout ur furmad URL reizh, o kregiñ gant \"http\"",
- "sf_bad_email_error": "a rank kaout ur furmad chomlec'h postel reizh",
- "sf_bad_number_error": "a rank bezañ un niver reizh",
- "sf_bad_date_error": "a rank bezañ un deiziad reizh",
- "uploadwindow": "Kargañ ar prenestr",
- "sf_deletionlog": "Marilh an dilamadennoù",
- "sf-pageschemas-pagenameformula": "Formulenn anv ar bajenn :",
- "sf-pageschemas-createtitle": "Titl ar furmskrid evit ar pajennoù nevez :",
- "sf-pageschemas-edittitle": "Titl ar furmskrid evit ar pajennoù zo anezho c'hoazh :",
- "sf-pageschemas-inputtype": "Seurt moned (lezel goullo evit an talvoud dre ziouer) :",
- "sf_property_isproperty": "Ar perzh-mañ zo eus ar seurt $1.",
- "sf_property_linkstoform": "Liammañ a ra ouzh ar pajennoù a implij ar furmskrid $1.",
- "sf_property_allowedvals": "An talvoudenn{{PLURAL:$1||où}} aotreet evit ar perzh-se a zo :",
- "sf_template_docu": "Hemañ eo ar patrom « $1 ».\nDleet e vefe bezañ galvet er furmad-mañ :",
- "sf_template_docufooter": "Aozañ ar bajenn evit gwelet testenn ar patrom.",
- "sf_form_docu": "Setu amañ ar furmskrid « $1 ».\nEvit krouiñ ur bajenn gant ar furmskrid-mañ, ebarzhit anv ar bajenn amañ dindan ;\nMa'z eus ur bajenn en anv-se dija, e viot kaset d'ur furmskrid a dalvez d'hec'h aozañ.",
- "sf_form_freetextlabel": "Testenn dieub",
- "sf_category_hasdefaultform": "Ar rummad-mañ a implij ar furmskrid $1.",
- "sf_category_desc": "Ar rummad $1 eo hemañ.",
- "sf_blank_namespace": "Pennañ",
- "right-viewedittab": "Gwelet an ivinell \"kemmañ\" evit ar pajennoù kemmus dre ur furmskrid",
- "right-editrestrictedfields": "Aozañ maeziennoù strishaet ar furmskridoù"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/bs.json b/SemanticForms/i18n/bs.json
deleted file mode 100644
index 1846b4a2..00000000
--- a/SemanticForms/i18n/bs.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "CERminator"
- ]
- },
- "semanticforms-desc": "Obrasci za dodavanje i uređivanje semantičkih podataka",
- "specialpages-group-sf_group": "Semantički obrasci",
- "createproperty": "Napravi osobinu",
- "sf_createproperty_linktoform": "Ovo svojstvo će voditi na stranice koje koriste obrazac:",
- "sf_createproperty_propname": "Naziv svojstva:",
- "sf_createproperty_proptype": "Vrsta:",
- "templates": "Šabloni",
- "sf_templates_docu": "Slijedeći šabloni postoje u wikiju.",
- "sf_templates_definescat": "definira kategoriju: $1",
- "createtemplate": "Napravi šablon",
- "sf_createtemplate_namelabel": "Ime šablona:",
- "sf_createtemplate_categorylabel": "Kategorija određena putem šablona (neobavezno):",
- "sf_createtemplate_templatefields": "Polja šablona",
- "sf_createtemplate_fieldname": "Ime polja:",
- "sf_createtemplate_displaylabel": "Prikaži naljepnicu:",
- "sf_createtemplate_semanticproperty": "Semantičko svojstvo:",
- "sf_createtemplate_fieldislist": "Ovo polje može sadržavati spisak vrijednosti, razdvojene zarezima",
- "sf_createtemplate_aggregationlabel": "Naslov za spisak:",
- "sf_createtemplate_outputformat": "Izlazni format:",
- "sf_createtemplate_standardformat": "Standardni",
- "sf_createtemplate_infoboxformat": "Infokutija na desnoj strani",
- "sf_createtemplate_addfield": "Dodaj polje",
- "sf_createtemplate_deletefield": "Obriši",
- "forms": "Obrasci",
- "sf_forms_docu": "Slijedeći obrasci postoje u wikiju.",
- "sf_forminputs_mandatory": "Obavezno",
- "sf_forminputs_restricted": "Samo administratori mogu mijenjati ovaj unos",
- "createform": "Napravi obrazac",
- "sf_createform_nameinput": "Naziv obrasca",
- "sf_createform_template": "Šablon:",
- "sf_createform_templatelabelinput": "Naslov šablona (opcija):",
- "sf_createform_field": "Polje:",
- "sf_createform_fieldprop": "Ovo polje definira svojstvo $1 tipa $2.",
- "sf_createform_inputtype": "Tip unosa:",
- "sf_createform_inputtypedefault": "(standardno)",
- "sf_createform_formlabel": "Naslov obrasca:",
- "sf_createform_hidden": "sakrivena",
- "sf_createform_removetemplate": "Ukloni šablon",
- "sf_createform_addtemplate": "Dodaj šablon:",
- "sf_createform_atend": "Na kraju",
- "sf_createform_add": "Dodaj",
- "sf_createform_choosefield": "Izaberite polje za dodavanje",
- "sf_createform_before": "Prije šablona:",
- "sf_createform_additembeforesave": "Morate dodati najmanje jedan šablon u ovaj obrazac prije nego što ga sačuvate.",
- "createcategory": "Napravi kategoriju",
- "sf_createcategory_name": "Naziv kategorije:",
- "sf_createcategory_defaultform": "Pretpostavljeni obrazac:",
- "sf_createcategory_makesubcategory": "Učini ovo subkategorijom neke kategorije (neobavezno):",
- "createclass": "Napravi klasu",
- "sf_createclass_allowedvalues": "Dopuštene vrijednosti:",
- "sf_createclass_listofvalues": "Spisak vrijednosti?",
- "sf_createclass_missingvalues": "Nisu popunjena sva neophodna polja.",
- "formstart": "Dodaj stranicu putem obrasca",
- "sf_formstart_badform": "Greška: nije pronađena stranica obrasca na $1",
- "sf_formstart_createoredit": "Napravi ili uredi",
- "formedit": "Uredi sa obrascem",
- "sf_formedit_createtitle": "Napravi $1: $2",
- "sf_formedit_createtitlenotarget": "Napravi $1",
- "sf_formedit_altformsonly": "Molimo Vas da odaberete jedan od slijedećih obrazaca za dodavanje ovoj stranici:",
- "sf_formcreate": "Napravi sa obrascem",
- "sf_viewform": "Pogledaj obrazac",
- "sf_editsource": "Uredi izvor",
- "sf_formedit_edittitle": "Uređivanje $1: $2",
- "sf_formedit_remove": "Ukloni",
- "sf_formedit_addanother": "Dodaj slijedeći",
- "sf_formedit_none": "ništa",
- "runquery": "Pokreni upit",
- "sf_runquery_title": "Pokreni upit: $1",
- "sf_runquery_additionalquery": "Dodatni upiti",
- "sf_blank_error": "ne može biti prazno",
- "sf_bad_email_error": "mora se navesti valjan format e-mail adrese",
- "sf_bad_number_error": "mora biti validan broj",
- "sf_bad_date_error": "mora biti valjan datum",
- "uploadwindow": "Prozor za postavljanje",
- "sf_deletionlog": "Zapisnik brisanja",
- "sf_template_docu": "Ovo je '$1' obrazac.\nTrebao bi se nazvati u slijedećem formatu:",
- "sf_form_freetextlabel": "Slobodni tekst",
- "sf_category_hasdefaultform": "Ova kategorija koristi obrazac $1.",
- "sf_category_desc": "Ovo je $1 kategorija.",
- "sf_blank_namespace": "Glavno",
- "right-editrestrictedfields": "Uređivanje ograničenih polja obrazca"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ca.json b/SemanticForms/i18n/ca.json
deleted file mode 100644
index 974c208a..00000000
--- a/SemanticForms/i18n/ca.json
+++ /dev/null
@@ -1,202 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Dvdgmz",
- "Paucabot",
- "SMP",
- "Solde",
- "Toniher"
- ]
- },
- "semanticforms-desc": "Formularis per afegir i editar continguts semàntics.",
- "specialpages-group-sf_group": "Semantic Forms",
- "createproperty": "Crea una propietat",
- "sf-createproperty-with-name": "Crea la propietat: $1",
- "sf_createproperty_linktoform": "Aquesta propietat enllaçarà a pàgines que usin el formulari:",
- "sf_createproperty_allowedvalsinput": "Si voleu que aquest camp permeti només alguns valors específics, introduïu la llista dels valors permesos, separats per comes (si un valor conté una coma, substituïu-la per «\\,»):",
- "sf_createproperty_propname": "Nom de l'atribut:",
- "sf_createproperty_proptype": "Tipus:",
- "templates": "Plantilles",
- "sf_templates_docu": "Les següents plantilles existeixen en el wiki.",
- "sf_templates_definescat": "Definir categoria: $1",
- "createtemplate": "Crea una plantilla",
- "sf-createtemplate-with-name": "Crea la plantilla: $1",
- "sf_createtemplate_namelabel": "Nom de la plantilla:",
- "sf_createtemplate_multipleinstance": "Aquesta plantilla pot incloure's diverses vegades a la pàgina.",
- "sf_createtemplate_connectingproperty": "Nom de la propietat per connectar els camps de la plantilla a la resta de la pàgina:",
- "sf_createtemplate_categorylabel": "Categoria definida mitjançant una plantilla (opcional):",
- "sf_createtemplate_templatefields": "Camps de la plantilla",
- "sf_createtemplate_fieldsdesc": "Per disposar dels camps en aquesta plantilla no és necessari posar els noms dels camps, simplement introduïu l'índex de cada camp (per exemple: 1, 2, 3, etc.) com a denominació de cadascun d'ells, en lloc del seu nom real.",
- "sf_createtemplate_fieldname": "Nom del camp:",
- "sf_createtemplate_displaylabel": "Etiqueta per mostrar:",
- "sf_createtemplate_semanticproperty": "Propietat semàntica:",
- "sf_createtemplate_fieldislist": "Aquest camp pot suportar una llista de valors, separats per comes",
- "sf_createtemplate_aggregation": "Agregació",
- "sf_createtemplate_aggregationdesc": "Per crear una llista, a qualsevol pàgina que utilitzi aquesta plantilla, de tots els articles que tenen alguna propietat que apunta a aquesta pàgina, especifiqueu la propietat adequada a continuació:",
- "sf_createtemplate_aggregationlabel": "Títol del llistat:",
- "sf_createtemplate_outputformat": "Format de sortida:",
- "sf_createtemplate_standardformat": "Taula",
- "sf_createtemplate_infoboxformat": "Infocaixa lateral",
- "sf_createtemplate_plainformat": "Text net",
- "sf_createtemplate_sectionsformat": "Seccions",
- "sf_createtemplate_addfield": "Afegeix un camp",
- "sf_createtemplate_deletefield": "Elimina",
- "forms": "Formularis",
- "sf_forms_docu": "Els formularis següents ja existeixen al wiki.",
- "sf_forminputs_mandatory": "Obligatori",
- "sf_forminputs_restricted": "Només els administrador poden editar aquesta entrada",
- "sf_forminputs_class": "L'atribut HTML «class» d'aquesta entrada",
- "sf_forminputs_default": "El valor per defecte de l'entrada",
- "sf_forminputs_preload": "Una pàgina wiki, els continguts de la qual seran el valor per defecte de l'entrada",
- "sf_forminputs_property": "Una propietat semàntica que correspon a aquest camp",
- "sf_forminputs_size": "La mida del camp de text, en caràcters",
- "sf_forminputs_maxlength": "La longitud màxima permesa per al text d'aquest camp",
- "sf_forminputs_placeholder": "Text d'ajuda que apareix a l'entrada fins que l'usuari hi fa clic",
- "sf_forminputs_uploadable": "Col·loca un enllaç de «{{int:upload}}» al costat del camp d'entrada",
- "sf_forminputs_defaultfilename": "El nom de fitxer per defecte dels fitxers carregats",
- "sf_forminputs_rows": "El nombre de files de l'entrada",
- "sf_forminputs_cols": "El nombre de columnes de l'entrada",
- "sf_forminputs_autogrow": "Defineix que l'entrada pugui créixer en mida si el text supera els límits",
- "sf_forminputs_valuesfromproperty": "Una propietat els valors de la qual en el wiki hauria de tenir un conjunt de valors d'aquesta entrada",
- "sf_forminputs_valuesfromcategory": "Una categoria, les pàgines de la qual, hauria de tenir el conjunt de valors d'aquesta entrada",
- "sf_forminputs_valuesfromnamespace": "Un espai de noms, les pàgines del qual seran el conjunt de valors d'aquesta entrada",
- "sf_forminputs_valuesfromconcept": "Una pàgina «concepte» del Semantic MediaWiki, les pàgines del qual seran el conjunt de valors d'aquesta entrada",
- "sf_forminputs_valuesfromurl": "Un URL que conté dades estructurades que seran el conjunt de valors d'aquesta entrada",
- "sf_forminputs_values": "El conjunt de valors de l'entrada, separats per comes",
- "sf_forminputs_list": "Marca que l'entrada contindrà una llista de valors",
- "sf_forminputs_delimiter": "El delimitador entre els valors del camp, si l'entrada en conté una llista",
- "sf_forminputs_remoteautocompletion": "Utilitza l'autocompleció remota",
- "sf_forminputs_existingvaluesonly": "Permet només valors que ja són a la llista",
- "sf_forminputs_showonselect": "Elements de pàgina per mostrar només si se seleccionen certs valors (p. ex.: «valor1=>div1;valor=>div2»)",
- "sf_forminputs_listboxsize": "L'alçada d'aquesta caixa de llista, en files",
- "sf_forminputs_includetimezone": "Inclou una entrada per al fus horari",
- "sf_forminputs_topcategory": "La categoria pare d'aquest conjunt de categories (obligatori)",
- "sf_forminputs_hideroot": "Amaga la categoria pare",
- "sf_forminputs_depth": "El nombre de nivells de categoria que es mostraran inicialment",
- "sf_forminputs_height": "L'alçada de l'entrada, en píxels",
- "sf_forminputs_width": "L'amplada de l'entrada, en píxels",
- "createform": "Crea un formulari",
- "sf-createform-with-name": "Crea el formulari: $1",
- "sf_createform_nameinput": "Nom del formulari",
- "sf_createform_nameinputdesc": "(el formulari normalment rep el mateix nom com que la plantilla principal):",
- "sf_createform_template": "Plantilla:",
- "sf_createform_templatelabelinput": "Etiqueta de la plantilla (opcional):",
- "sf_createform_allowmultiple": "Permet múltiples (o cap) instàncies d'aquesta plantilla en la pàgina a crear",
- "sf_createform_field": "Camp:",
- "sf_createform_fieldprop": "Aquest camp defineix la propietat $1, de tipus $2",
- "sf_createform_fieldproplist": "Aquest camp defineix una llista d'elements que tenen la propietat $1, de tipus $2",
- "sf_createform_fieldpropunknowntype": "Aquest camp defineix la propietat $1, de la qual no se n'ha especificat el tipus.",
- "sf_createform_inputtype": "Tipus d'entrada:",
- "sf_createform_inputtypedefault": "(per defecte)",
- "sf_createform_formlabel": "Etiqueta de formulari:",
- "sf_createform_hidden": "Amagat",
- "sf_createform_removetemplate": "Suprimeix la plantilla",
- "sf_createform_addtemplate": "Afegeix una plantilla:",
- "sf_createform_atend": "Al final",
- "sf_createform_add": "Afegeix",
- "sf_createform_choosefield": "Trieu un camp per afegir",
- "sf_createform_pagesection": "Secció de la pàgina:",
- "sf_createform_addsection": "Afegeix una secció",
- "sf_createform_removesection": "Suprimeix la secció",
- "sf_createform_before": "Plantilla anterior:",
- "sf_createform_addelements": "Afegeix elements",
- "sf_createform_hiddensection": "Aquesta entrada està amagada en el formulari",
- "sf_createform_sectionlevel": "Nivell de secció:",
- "sf_createform_sectionname": "Nom de la secció",
- "sf_createform_additembeforesave": "Per poder guardar-lo has d'afegir com a mínim una plantilla a aquest formulari.",
- "sf_createform_otherparameters": "Altres paràmetres",
- "createcategory": "Crea una categoria",
- "sf-createcategory-with-name": "Crea la categoria: $1",
- "sf_createcategory_name": "Nom de la categoria:",
- "sf_createcategory_defaultform": "Formulari per defecte:",
- "sf_createcategory_makesubcategory": "Fes que aquesta sigui una subcategoria d'una altra categoria (opcional):",
- "createclass": "Crea una classe",
- "sf_createclass_docu": "Introduïu totes les dades a continuació per crear les propietats, plantilla i categoria d'una única classe. Per a més opcions, feu servir millor les pàgines $1.",
- "sf_createclass_allowedvalues": "Valors permesos:",
- "sf_createclass_listofvalues": "Cap llista de valors?",
- "sf_createclass_nameinput": "Nom del formulari:",
- "sf_createclass_missingvalues": "No s'han omplert tots els camps necessaris.",
- "sf_createclass_success": "Es crearan propietats, plantilla, formulari i categoria.",
- "sf_createclass_create": "Crea",
- "formstart": "Afegeix pàgina via formulari",
- "sf_formstart_badform": "Error: no s'ha trobat una pàgina de formulari a $1",
- "sf_formstart_badtitle": "Error: «$1» no és un títol vàlid d'una pàgina.",
- "sf_formstart_docu": "Introduïu el nom de la pàgina a continuació, per ser editada amb el formulari «$1».\nSi aquesta pàgina ja existeix, s'obrirà el formulari per editar-la.\nSi no, s'obrirà el formulari per afegir una pàgina nova.",
- "sf_formstart_noform_docu": "Introduïu a continuació el nom de la pàgina i seleccioneu un formulari per editar-la.\nSi aquesta pàgina ja existeix, s'obrirà el formulari per editar-la.\nSi no, s'obrirà el formulari per afegir una pàgina nova.",
- "sf_formstart_createoredit": "Crea o modifica",
- "formedit": "Modifica amb formulari",
- "sf_formedit_createtitle": "Crea $1: $2",
- "sf_formedit_createtitlenotarget": "Crea $1",
- "sf_formedit_badurl": "Aquesta és la pàgina per editar amb un formulari. Cal que especifiqueu a l'URL tant un nom de formulari com una pàgina de destí;\nha de ser quelcom similar a 'Especial:FormEdit?form=<nom_formulari>&target=<pàgina_destí>', o bé 'Especial:FormEdit/<nom_formulari>/<pàgina_destí>'.",
- "sf_formedit_altforms": "Alternativament pots afegir aquesta pàgina amb un dels formularis següents:",
- "sf_formedit_altformsonly": "Seleccioneu un formulari entre els següents per afegir aquesta pàgina:",
- "sf_formcreate": "Crea amb formulari",
- "sf_viewform": "Visualitza el formulari",
- "sf_editsource": "Modifica el codi",
- "sf_formedit_edittitle": "Edita $1: $2",
- "sf_formedit_morethanoneform": "'''Avís:''' s'ha definit més d'un formulari per defecte en aquesta pàgina.",
- "sf_formedit_formwarning": "Atenció: Aquesta pàgina <a href=\"$1\">ja existeix</a>, però no fa servir aquest formulari.",
- "sf_formedit_mismatchedbrackets": "Avís: la pàgina conté claus o claudàtors que no s'han tancat, per tant el formulari no podrà gestionar correctament la pàgina. <a href=\"$1\">Arregleu-ne l'error en el text del codi</a> abans de procedir.",
- "sf_formedit_remove": "Suprimeix aquesta instància",
- "sf_formedit_addanotherabove": "Afegeix una altra instància sobre d'aquesta",
- "sf_formedit_addanother": "Afegeix-ne un altre",
- "sf_formedit_none": "Cap",
- "sf_formedit_emptytitle": "Error: les dades inserides donen lloc a un títol de pàgina en blanc.",
- "sf_formedit_hookerror": "Error: una extensió de MediaWiki ha evitat que es modifiqui la pàgina objectiu.",
- "sf_formedit_saveandcontinueediting": "Desa i continua",
- "sf_formedit_saveandcontinue_summary": "Desat fent servir el botó «$1» al formulari",
- "sf_formedit_tooltip_saveandcontinueediting": "Desa les dades i continua editant",
- "sf_autoedit_anoneditwarning": "Avís: no heu iniciat una sessió. La vostra adreça IP s'enregistrarà en l'historial d'edició de la pàgina.",
- "sf_autoedit_success": "S'ha modificat amb èxit [[$1]] fent servir el formulari $2.",
- "sf_autoedit_fail": "Ha fallat la modificació de [[$1]].",
- "sf_autoedit_notargetspecified": "No s'ha especificat cap pàgina de destinació.",
- "sf_autoedit_invalidtargetspecified": "La pàgina de destinació especificada '''$1''' no és vàlida.",
- "sf_autoedit_invalidform": "'''$1''' no és un formulari vàlid.",
- "sf_autoedit_redirectlimitexeeded": "S'ha excedit el límit màxim de redireccions del formulari $1.",
- "sf_autoedit_invalidredirecttarget": "$1 és una destinació de redirecció no vàlida per al formulari $2.",
- "sf_autoedit_invalidpreloadspecified": "La pàgina de precàrrega especificada $1 no és vàlida.",
- "sf_autoedit_redlinkexists": "$1 ja existeix.",
- "sf_autoedit_noformfound": "No s'ha especificat cap formulari.",
- "sf_autoedit_toomanyformsfound": "Hi ha més d'un formulari disponible per pàgina.",
- "sf_autoedit_readonly": "La base de dades es troba actualment bloquejada a les modificacions. Motiu: $1",
- "sf_autoedit_nosemanticform": "No s'ha pogut aconseguir el formulari $2 de la pàgina $1. Consulteu [[{{#special:FormEdit}}/$2/$1]] per a més detalls.",
- "sf_autoedit_summary": "Editat automàticament de la pàgina $1.",
- "sf-autoedit-wait": "Espereu…",
- "runquery": "Executa la consulta",
- "sf_runquery_badurl": "Heu d'especificar un nom de formulari a l'URL;\nl'URL hauria de ser com 'Especial:RunQuery/<nom_formulari>'.",
- "sf_runquery_title": "Executa consulta: $1",
- "sf_runquery_additionalquery": "Consulta addicional",
- "sf_formerrors_header": "Hi ha hagut errors en les teves entrades al formulari; veure a continuació",
- "sf_too_few_instances_error": "Ha d'haver-hi com a mínim $1 instàncies d'aquesta plantilla.",
- "sf_too_many_instances_error": "No ha d'haver-hi més de $1 instàncies d'aquesta plantilla.",
- "sf_blank_error": "no es pot deixar en blanc",
- "sf_bad_url_error": "ha de tenir un format de URL correcte, començant per 'http'",
- "sf_bad_email_error": "ha de tenir un format vàlid d'adreça de correu electrònic",
- "sf_bad_number_error": "ha de ser un nombre vàlid",
- "sf_bad_date_error": "ha de ser una data vàlida",
- "uploadwindow": "Finestra de càrrega",
- "sf_deletionlog": "Registre d'eliminació",
- "sf-preview-header": "Previsualització del formulari",
- "sf-preview-note": "Aquest és l'aspecte del formulari quan estigui en ús:",
- "sf-pageschemas-pagenameformula": "Fórmula del nom de la pàgina:",
- "sf-pageschemas-createtitle": "Títol de formulari de les pàgines noves:",
- "sf-pageschemas-edittitle": "Títol de formulari de les pàgines existents:",
- "sf-pageschemas-inputtype": "Tipus d'entrada (deixeu-ho en blanc per definir-ho al valor per defecte):",
- "sf-pageschemas-otherparams": "Introduïu els noms dels paràmetres i llurs valors com a parells de clau=valor, separats per comes (si un valor conté una coma, reemplaçeu-lo amb «\\,»). Per exemple: $1",
- "sf_property_isproperty": "Aquesta és una propietat del tipus $1.",
- "sf_property_linkstoform": "Enllaça a pàgines que usen el formulari $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|El valor permès per a aquesta propietat és|Els valors permesos per a aquestes propietats són}}:",
- "sf_template_docu": "Aquesta és la plantilla '$1'.\nQue ha de ser cridada en el format següent:",
- "sf_template_docufooter": "Edita la pàgina per veure el text de la plantilla.",
- "sf_form_docu": "Aquest és el formulari '$1'.\nPer crear una pàgina amb aquest formulari, entreu el nom de la pàgina a continuació;\nsi la pàgina amb aquest nom ja existeix, s'obrirà un formulari per editar-la.",
- "sf_form_freetextlabel": "Text lliure",
- "sf_category_hasdefaultform": "Aquesta categoria fa servir el formulari $1.",
- "sf_category_desc": "Aquesta és la categoria $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Mostra la pestanya «{{int:edit}}» a les pàgines que es poden editar amb un formulari",
- "right-editrestrictedfields": "Editar les caselles restringides del formulari",
- "right-createclass": "Crea noves classes semàntiques",
- "action-createclass": "crea classes semàntiques noves",
- "action-editrestrictedfields": "modifica els camps de formulari restringits",
- "action-viewedittab": "Mostra la pestanya «{{int:edit}}» a les pàgines que es poden editar amb un formulari"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ce.json b/SemanticForms/i18n/ce.json
deleted file mode 100644
index 53a63120..00000000
--- a/SemanticForms/i18n/ce.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Sasan700",
- "Умар"
- ]
- },
- "sf_createproperty_proptype": "Тайп:",
- "templates": "Кепаш",
- "sf_createtemplate_addfield": "ТӀетоха тӀеха",
- "sf_createtemplate_deletefield": "ДӀаяккха",
- "forms": "Форман",
- "sf_forminputs_mandatory": "ТӀехь дерг",
- "sf_forminputs_restricted": "Куьйгалхошна бен цатарло хӀара хийца",
- "sf_createform_nameinput": "Форман цӀе",
- "sf_createform_template": "Кеп:",
- "sf_createform_inputtypedefault": "(Iад йитарца)",
- "sf_createform_removetemplate": "ДӀаяккха кеп",
- "sf_createform_addtemplate": "ТӀетоха кеп:",
- "sf_createform_add": "ТӀетоха",
- "sf_createform_hiddensection": "ХӀара язден меттиг къайлаяьккхина",
- "sf_createform_otherparameters": "Кхин параметраш",
- "sf_createclass_nameinput": "Форман цӀе:",
- "sf_formstart_createoredit": "Кхолла я нисйé",
- "formedit": "Тае форман гӀоьнца",
- "sf_formedit_remove": "ДӀаяккха",
- "sf_formedit_addanother": "Кхин тIетоха",
- "sf_formedit_none": "Хlумма цаоьшу",
- "sf_autoedit_success": "Кхиамца хийцина [[$1]] $2 форман гӀоьнца.",
- "sf-preview-header": "Хьалха муха ю хьажар"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ckb.json b/SemanticForms/i18n/ckb.json
deleted file mode 100644
index 1353f137..00000000
--- a/SemanticForms/i18n/ckb.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "@metadata": {
- "authors": []
- },
- "sf_createtemplate_deletefield": "سڕینەوە"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/cs.json b/SemanticForms/i18n/cs.json
deleted file mode 100644
index 06b27106..00000000
--- a/SemanticForms/i18n/cs.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Juan de Vojníkov",
- "Juandev",
- "Matěj Grabovský",
- "Michaelbrabec",
- "Mormegil",
- "Reaperman",
- "Vks"
- ]
- },
- "createproperty": "Vytvořit vlastnost",
- "sf_createproperty_propname": "Název:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Šablony",
- "createtemplate": "Vytvořit šablonu",
- "sf_createtemplate_namelabel": "Název šablony:",
- "sf_createtemplate_templatefields": "Pole šablony",
- "sf_createtemplate_fieldname": "Název pole:",
- "sf_createtemplate_displaylabel": "Zobrazované označení:",
- "sf_createtemplate_semanticproperty": "Sémantická vlastnost:",
- "sf_createtemplate_fieldislist": "Toto pole může obsahovat seznam hodnot oddělených čárkami",
- "sf_createtemplate_outputformat": "Výstupní formát:",
- "sf_createtemplate_standardformat": "Tabulka",
- "sf_createtemplate_plainformat": "Prostý text",
- "sf_createtemplate_addfield": "Přidat pole",
- "sf_createtemplate_deletefield": "Smazat",
- "forms": "Formuláře",
- "sf_createform_nameinput": "Název formuláře",
- "sf_createform_template": "Šablona:",
- "sf_createform_field": "Pole:",
- "sf_createform_inputtypedefault": "(výchozí)",
- "sf_createform_hidden": "Skrytý",
- "sf_createform_add": "Přidat",
- "sf_createform_addsection": "Přidat sekci",
- "sf_createform_removesection": "Odstranit sekci",
- "sf_createform_before": "Před:",
- "sf_createform_addelements": "Přidat prvky",
- "sf_createform_sectionname": "Název sekce",
- "sf_createform_otherparameters": "Další parametry",
- "sf_createclass_create": "Založit",
- "sf_formstart_createoredit": "Vytvořit nebo upravit",
- "sf_formedit_remove": "Odstranit",
- "sf_formedit_none": "Nic",
- "sf_formedit_tooltip_saveandcontinueediting": "Uložit a pokračovat v úpravách",
- "sf-autoedit-wait": "Čekejte...",
- "sf_deletionlog": "Kniha smazaných stránek",
- "sf_blank_namespace": "Hlavní",
- "right-viewedittab": "Zobrazování záložky „Editovat“ na stránkách editovatelných pomocí formuláře",
- "right-editrestrictedfields": "Editování polí formulářů s omezeným přístupem",
- "right-createclass": "Zakládání nových sémantických tříd"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/cu.json b/SemanticForms/i18n/cu.json
deleted file mode 100644
index 961a1449..00000000
--- a/SemanticForms/i18n/cu.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "ОйЛ"
- ]
- },
- "sf_createtemplate_deletefield": "поничьжє́ниѥ"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/da.json b/SemanticForms/i18n/da.json
deleted file mode 100644
index ceeada2f..00000000
--- a/SemanticForms/i18n/da.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jon Harald Søby"
- ]
- },
- "sf_createproperty_propname": "Navn:",
- "sf_createtemplate_standardformat": "Standard",
- "sf_createtemplate_deletefield": "Slet",
- "sf_createform_template": "Skabelon:",
- "sf_createform_inputtypedefault": "(standard)",
- "sf_createcategory_name": "Navn:",
- "sf_formedit_none": "Ingen"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/de-formal.json b/SemanticForms/i18n/de-formal.json
deleted file mode 100644
index bbf837b7..00000000
--- a/SemanticForms/i18n/de-formal.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Dst",
- "Imre",
- "Kghbln",
- "The Evil IP address",
- "Umherirrender"
- ]
- },
- "sf_createproperty_allowedvalsinput": "Sofern Sie für dieses Attribut nur bestimmte Werte zulassen möchten, geben Sie diese bitte in Form einer kommagetrennten Liste an (falls ein Wert ein Komma enthält, müssen Sie es durch „\\,“ ersetzen):",
- "sf_createform_allowmultiple": "Erlauben Sie mehrere (oder keine) Instanzen dieser Vorlage auf der erstellten Seite",
- "sf_createform_additembeforesave": "Hinweis: Sie müssen mindestens eine Vorlage zu diesem Formular hinzufügen, bevor Sie es speichern können.",
- "sf_createclass_docu": "Geben Sie hier alle Daten ein, um die Attribute, die Vorlage, das Formular und die Kategorie für eine einzelne Klasse zu erstellen.\nBitte nutzen Sie eine der folgenden Seiten für weitere Optionen: $1.",
- "sf_createclass_listofvalues": "Werte-<br />liste?",
- "sf_formstart_docu": "Geben Sie in dieses Textfeld den Namen der Seite ein, die mit dem Formular „$1“ bearbeitet werden soll.\nSofern bereits eine Seite dieses Namens vorhanden ist, wird das Formular aufgerufen, mit dem Sie sie bearbeiten können.\nAndernfalls wird das Formular zum Erstellen der Seite aufgerufen.",
- "sf_formstart_noform_docu": "Geben Sie in dieses Textfeld den Namen der Seite ein und wählen Sie das Formular aus, mit dem sie bearbeitet werden soll.\nSofern bereits eine Seite dieses Namens vorhanden ist, wird das Formular aufgerufen, mit dem Sie sie bearbeiten können.\nAndernfalls wird das Formular zum Erstellen der Seite aufgerufen.",
- "sf_formedit_createtitlenotarget": "Erstellen Sie $1",
- "sf_formedit_badurl": "Dies ist die Spezialseite zum Bearbeiten einer Seite mit einem Formular. Sie müssen den Namen eines Formulars und den Namen der zu bearbeitenden Seite in der URL angeben.\nDie URL sollte wie folgt aussehen: „Spezial:Mit_Formular_bearbeiten?form=<Formularname>&target=<Seitenname>“ oder „Spezial:Mit_Formular_bearbeiten/<Formularname>/<Seitenname>“.",
- "sf_formerrors_header": "Ihre Eingabe ist fehlerhaft oder unvollständig. Siehe hierzu die Hinweise unten, neben dem jeweiligen Formularfeld.",
- "sf_template_docufooter": "Klicken Sie auf „Bearbeiten“, um den Quelltext der Vorlage anzusehen.",
- "sf_form_docu": "Dies ist das Formular „$1“.\nUm eine Seite mit diesem Formular zu erstellen, geben Sie den Seitennamen unten in das Eingabefeld ein.\nSofern bereits eine Seite mit diesem Namen vorhanden ist, werden Sie automatisch zum Formular für das Bearbeiten der Seite weitergeleitet."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/de.json b/SemanticForms/i18n/de.json
deleted file mode 100644
index a8ab0696..00000000
--- a/SemanticForms/i18n/de.json
+++ /dev/null
@@ -1,210 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Als-Holder",
- "Cipher",
- "DaSch",
- "Dominik Rodler",
- "F.trott",
- "Goetz",
- "Kghbln",
- "Melancholie",
- "Metalhead64",
- "Pill",
- "Purodha",
- "The Evil IP address",
- "Umherirrender"
- ]
- },
- "semanticforms-desc": "Ermöglicht Formulare zum Hinzufügen und Bearbeiten semantischer Daten",
- "specialpages-group-sf_group": "Semantische Formulare",
- "createproperty": "Ein Attribut erstellen",
- "sf-createproperty-with-name": "Attribut erstellen: $1",
- "sf_createproperty_linktoform": "Dieses Attribut wird auf Seiten weisen, die nachfolgendes Formular nutzen:",
- "sf_createproperty_allowedvalsinput": "Sofern du für dieses Attribut nur bestimmte Werte zulassen möchtest, gib diese bitte in Form einer kommagetrennten Liste an (falls ein Wert ein Komma enthält, musst du es durch „\\,“ ersetzen):",
- "sf_createproperty_propname": "Attributname:",
- "sf_createproperty_proptype": "Datentyp:",
- "templates": "Vorlagen",
- "sf_templates_docu": "Die folgenden Vorlagen sind in diesem Wiki vorhanden:",
- "sf_templates_definescat": "definiert die Kategorie: $1",
- "createtemplate": "Eine Vorlage erstellen",
- "sf-createtemplate-with-name": "Vorlage erstellen: $1",
- "sf_createtemplate_namelabel": "Vorlagenname:",
- "sf_createtemplate_multipleinstance": "Diese Vorlage kann mehrfach in eine Seite eingebettet werden.",
- "sf_createtemplate_connectingproperty": "Name des Attributs, mit dem die Felder dieser Vorlage mit dem Rest der Seite verbunden werden:",
- "sf_createtemplate_categorylabel": "Durch Vorlage definierte Kategorie (optional Angabe):",
- "sf_createtemplate_templatefields": "Vorlagenfelder",
- "sf_createtemplate_fieldsdesc": "Sofern die Felder dieser Vorlage keinen Feldnamen benötigen, ist es zur Unterscheidung ausreichend, sie aufsteigend mit Zahlen zu indexieren (z. B. 1, 2, 3, usw.).",
- "sf_createtemplate_fieldname": "Feldname:",
- "sf_createtemplate_displaylabel": "Anzuzeigender Feldname:",
- "sf_createtemplate_semanticproperty": "Semantisches Attribut:",
- "sf_createtemplate_fieldislist": "Dieses Feld kann eine Liste von Werten enthalten, die durch Kommata getrennt werden.",
- "sf_createtemplate_aggregation": "Zusammenfassung",
- "sf_createtemplate_aggregationdesc": "Es ist möglich auf allen Seiten, die diese Vorlage benutzen, alle Seiten aufzulisten, die über ein bestimmtes Attribut verfügen, das auf diese Seite verweist. Hierzu muss dass entsprechende Attribut angegeben werden:",
- "sf_createtemplate_aggregationlabel": "Name für die Liste:",
- "sf_createtemplate_outputformat": "Ausgabeformat:",
- "sf_createtemplate_standardformat": "Tabelle",
- "sf_createtemplate_infoboxformat": "Seitlicher Informationsbereich",
- "sf_createtemplate_plainformat": "Klartext",
- "sf_createtemplate_sectionsformat": "Abschnitte",
- "sf_createtemplate_addfield": "Weiteres Feld hinzufügen",
- "sf_createtemplate_deletefield": "Löschen",
- "forms": "Formulare",
- "sf_forms_docu": "Die folgenden Formulare sind in diesem Wiki vorhanden:",
- "sf_forminputs_mandatory": "In dieses Eingabefeld muss ein Wert eingegeben werden",
- "sf_forminputs_restricted": "Nur Administratoren können dieses Eingabefeld bearbeiten",
- "sf_forminputs_class": "Das HTML-Attribut „class“ für dieses Eingabefeld",
- "sf_forminputs_default": "Der Standardwert für dieses Eingabefeld",
- "sf_forminputs_preload": "Eine Wikiseite dessen Inhalt der Standardwert dieses Eingabefelds werden wird",
- "sf_forminputs_property": "Ein semantisches Attribut, dass diesem Eingabefeld entspricht",
- "sf_forminputs_size": "Die Größe dieses Textfelds (in Zeichen)",
- "sf_forminputs_maxlength": "Die maximal zulässige Länge des Textes in diesem Eingabefeld",
- "sf_forminputs_placeholder": "Der Hilfetext, der angezeigt wird, bis der Benutzer ihn anklickt",
- "sf_forminputs_uploadable": "Einen Link zum Hochladen einer Datei („{{int:upload}}“) neben diesem Eingabefeld platzieren",
- "sf_forminputs_defaultfilename": "Der Standarddateiname für hochgeladene Dateien",
- "sf_forminputs_rows": "Die Anzahl der Zeilen für dieses Eingabefeld",
- "sf_forminputs_cols": "Die Anzahl der Spalten für dieses Eingabefeld",
- "sf_forminputs_autogrow": "Größenwachstum für dieses Eingabefeld erlauben, sofern der Eingabetext dessen Standardgröße überschreitet.",
- "sf_forminputs_valuesfromproperty": "Ein Attribut, dessen im Wiki vorhandenen Werte die Eingabewerte dieses Eingabefelds sein sollen",
- "sf_forminputs_valuesfromcategory": "Eine Kategorie, dessen im Wiki zugeordneten Seiten die Eingabewerte dieses Eingabefelds sein sollen",
- "sf_forminputs_valuesfromnamespace": "Ein Namensraum, dessen im Wiki vorhandenen Seiten die Eingabewerte dieses Eingabefelds sein sollen",
- "sf_forminputs_valuesfromconcept": "Eine dynamische Kategorie („Konzept“), dessen im Wiki zugeordneten Seiten die Eingabewerte dieses Eingabefelds sein sollen",
- "sf_forminputs_valuesfromurl": "Eine URL, die strukturierte Daten enthält, welche die Eingabewerte dieses Eingabefelds sein sollen",
- "sf_forminputs_values": "Eine Anzahl durch Kommata getrennter Werte, welche die Eingabewerte dieses Eingabefelds sein sollen",
- "sf_forminputs_list": "Dieses Eingabefeld als Eingabefeld mit einer Reihe von Eingabewerten markieren",
- "sf_forminputs_delimiter": "Das Trennzeichen zwischen den Eingabewerten, sofern dieses Eingabefeld über eine Reihe von Eingabewerten verfügt",
- "sf_forminputs_remoteautocompletion": "Autovervollständigung mit wikifremden (entfernten) Eingabewerten",
- "sf_forminputs_existingvaluesonly": "Nur Werte zulassen, die sich bereits in der Liste befinden",
- "sf_forminputs_showonselect": "Anzuzeigende Seitenelemente sofern bestimmte Eingabewerte ausgewählt wurden (Beispiel: „Wert1→Element1; Wert2→Element2“)",
- "sf_forminputs_listboxsize": "Die Höhe dieses Listenfelds in Zeilen",
- "sf_forminputs_includetimezone": "Ein Eingabefeld für die Zeitzone bereitstellen",
- "sf_forminputs_topcategory": "Die übergeordnete Kategorie dieser Reihe von Kategorien (erforderliche Angabe)",
- "sf_forminputs_hideroot": "Die übergeordnete Kategorie ausblenden",
- "sf_forminputs_depth": "Die Anzahl der Kategorieebenen, die zunächst angezeigt werden sollen",
- "sf_forminputs_height": "Die Höhe dieses Eingabefelds (in Pixeln)",
- "sf_forminputs_width": "Die Breite dieses Eingabefelds (in Pixeln)",
- "createform": "Ein Formular erstellen",
- "sf-createform-with-name": "Formular erstellen: $1",
- "sf_createform_nameinput": "Formularname",
- "sf_createform_nameinputdesc": "(In der Regel wird das das Formular nach der Hauptvorlage benannt):",
- "sf_createform_template": "Vorlage:",
- "sf_createform_templatelabelinput": "Vorlagenbezeichnung (optional):",
- "sf_createform_allowmultiple": "Erlaube mehrere (oder keine) Instanzen dieser Vorlage auf der erstellten Seite",
- "sf_createform_field": "Feld:",
- "sf_createform_fieldprop": "Dieses Feld definiert das Attribut $1 vom Datentyp $2.",
- "sf_createform_fieldproplist": "Dieses Feld definiert eine Liste an Werten, die das Attribut $1 vom Datentyp $2 besitzen.",
- "sf_createform_fieldpropunknowntype": "Dieses Feld definiert das Attribut $1 eines nicht angegebenen Datentyps.",
- "sf_createform_inputtype": "Eingabetyp:",
- "sf_createform_inputtypedefault": "(Standardwert)",
- "sf_createform_formlabel": "Formularbezeichnung:",
- "sf_createform_hidden": "Versteckt",
- "sf_createform_removetemplate": "Vorlage entfernen",
- "sf_createform_addtemplate": "Vorlage hinzufügen:",
- "sf_createform_atend": "am Ende",
- "sf_createform_add": "Hinzufügen",
- "sf_createform_choosefield": "Ein Feld auswählen, das hinzugefügt werden soll",
- "sf_createform_pagesection": "Seitenabschnitt:",
- "sf_createform_addsection": "Abschnitt hinzufügen",
- "sf_createform_removesection": "Abschnitt entfernen",
- "sf_createform_before": "Vor der Vorlage:",
- "sf_createform_addelements": "Elemente hinzufügen",
- "sf_createform_hiddensection": "Diese Eingabe ist im Formular versteckt",
- "sf_createform_sectionlevel": "Abschnittsebene:",
- "sf_createform_sectionname": "Abschnittsname",
- "sf_createform_additembeforesave": "Hinweis: Du musst mindestens eine Vorlage zu diesem Formular hinzufügen, bevor du es speichern kannst.",
- "sf_createform_otherparameters": "Andere Parameter",
- "createcategory": "Eine Kategorie erstellen",
- "sf-createcategory-with-name": "Kategorie erstellen: $1",
- "sf_createcategory_name": "Kategoriename:",
- "sf_createcategory_defaultform": "Standardformular:",
- "sf_createcategory_makesubcategory": "Diese Kategorie zu einer Unterkategorie einer anderen Kategorie machen (optional):",
- "createclass": "Eine Klasse erstellen",
- "sf_createclass_docu": "Gib hier alle Daten ein, um die Attribute, die Vorlage, das Formular und die Kategorie für eine einzelne Klasse zu erstellen.\nBitte nutze eine der folgenden Seiten für weitere Optionen: $1.",
- "sf_createclass_allowedvalues": "Erlaubte Werte:",
- "sf_createclass_listofvalues": "Werte-<br />liste?",
- "sf_createclass_nameinput": "Formularname:",
- "sf_createclass_missingvalues": "Es wurden nicht alle benötigten Felder ausgefüllt.",
- "sf_createclass_success": "Die Attribute, die Vorlage, das Formular und die Kategorie werden erstellt.",
- "sf_createclass_create": "Erstellen",
- "formstart": "Mit Formular hinzufügen",
- "sf_formstart_badform": "Fehler: Das Formular $1 wurde nicht gefunden.",
- "sf_formstart_badtitle": "Fehler: „$1“ ist kein gültiger Seitenname.",
- "sf_formstart_docu": "Gib in dieses Textfeld den Namen der Seite ein, die mit dem Formular „$1“ bearbeitet werden soll.\nSofern bereits eine Seite dieses Namens vorhanden ist, wird das Formular aufgerufen, mit dem du sie bearbeiten kannst.\nAndernfalls wird das Formular zum Erstellen der Seite aufgerufen.",
- "sf_formstart_noform_docu": "Gib in dieses Textfeld den Namen der Seite ein und wähle das Formular aus, mit dem sie bearbeitet werden soll.\nSofern bereits eine Seite dieses Namens vorhanden ist, wird das Formular aufgerufen, mit dem du sie bearbeiten kannst.\nAndernfalls wird das Formular zum Erstellen der Seite aufgerufen.",
- "sf_formstart_createoredit": "Erstellen oder bearbeiten",
- "formedit": "Mit Formular bearbeiten",
- "sf_formedit_createtitle": "$1 erstellen: $2",
- "sf_formedit_createtitlenotarget": "Erstelle $1",
- "sf_formedit_badurl": "Dies ist die Spezialseite zum Bearbeiten einer Seite mit einem Formular. Du musst den Namen eines Formulars und den Namen der zu bearbeitenden Seite in der URL angeben.\nDie URL sollte wie folgt aussehen: „Spezial:Mit_Formular_bearbeiten?form=<Formularname>&target=<Seitenname>“ oder „Spezial:Mit_Formular_bearbeiten/<Formularname>/<Seitenname>“.",
- "sf_formedit_altforms": "Alternativ kann diese Seite mit einem der folgenden Formulare erstellt werden:",
- "sf_formedit_altformsonly": "Bitte eines der folgenden Formulare auswählen, um diese Seite zu erstellen:",
- "sf_formcreate": "Mit Formular erstellen",
- "sf_viewform": "Formular anzeigen",
- "sf_editsource": "Quelltext bearbeiten",
- "sf_formedit_edittitle": "Bearbeite $1: $2",
- "sf_formedit_morethanoneform": "'''Warnung:''' Es ist mehr als ein Standardformular für diese Seite definiert.",
- "sf_formedit_formwarning": "Warnung: Diese Seite <a href=\"$1\">ist bereits vorhanden</a>, nutzt aber nicht dieses Formular.",
- "sf_formedit_mismatchedbrackets": "Warnung: Diese Seite enthält geschweifte oder eckige Klammern, die nicht entsprechend geschlossen sind. Die Seite kann daher nicht richtig vom Formular verarbeitet werden. Bitte vor dem Weitermachen den <a href=\"$1\">Fehler im Quellcode korrigieren</a>.",
- "sf_formedit_remove": "Diese Instanz entfernen",
- "sf_formedit_addanotherabove": "Eine weitere Instanz oberhalb dieser hinzufügen",
- "sf_formedit_addanother": "Weitere hinzufügen",
- "sf_formedit_none": "Keine Angabe",
- "sf_formedit_emptytitle": "Fehler: Die eingegebenen Daten ergeben einen leeren Seitentitel.",
- "sf_formedit_hookerror": "Fehler: Eine MediaWiki-Programmerweiterung hat die Änderung des Zielartikels verhindert.",
- "sf_formedit_saveandcontinueediting": "Zwischenspeichern",
- "sf_formedit_saveandcontinue_summary": "Wurde mit Schaltfläche „$1“ im Formular gespeichert",
- "sf_formedit_tooltip_saveandcontinueediting": "Eingaben speichern und Bearbeitung fortsetzen",
- "sf_autoedit_anoneditwarning": "Warnung: Diese Seite wird gerade unangemeldet bearbeitet. Beim Speichern wird die aktuelle IP-Adresse des Bearbeiters in der Versionsgeschichte aufgezeichnet und ist damit unwiderruflich '''öffentlich''' einsehbar.",
- "sf_autoedit_success": "[[$1]] mittels Formular $2 erfolgreich geändert.",
- "sf_autoedit_fail": "Die Änderung von [[$1]] ist fehlgeschlagen.",
- "sf_autoedit_notargetspecified": "Es wurde keine Zielseite angegeben.",
- "sf_autoedit_invalidtargetspecified": "Die angegebene Zielseite '''$1''' ist ungültig.",
- "sf_autoedit_invalidform": "'''$1''' ist kein gültiges Formular.",
- "sf_autoedit_redirectlimitexeeded": "Die maximale Anzahl zulässiger Weiterleitungen für Formular $1 wurde überschritten.",
- "sf_autoedit_invalidredirecttarget": "$1 ist ein ungültiges Weiterleitungsziel für Formular $2.",
- "sf_autoedit_invalidpreloadspecified": "Die angegebene, vorab zu ladende, Seite $1 ist ungültig.",
- "sf_autoedit_redlinkexists": "Die Seite $1 ist bereits vorhanden.",
- "sf_autoedit_noformfound": "Es wurde kein Formular angegeben.",
- "sf_autoedit_toomanyformsfound": "Für diese Seite ist mehr als ein Formular verfügbar.",
- "sf_autoedit_readonly": "Die Datenbank ist derzeit für Bearbeitungen gesperrt. Grund: $1",
- "sf_autoedit_nosemanticform": "Das Formular $2 konnte nicht für Seite $1 abgerufen werden. Siehe [[{{#special:FormEdit}}/$2/$1]] für Informationen hierzu.",
- "sf_autoedit_summary": "Automatisch von Seite $1 bearbeitet.",
- "sf-autoedit-wait": "Verarbeite …",
- "runquery": "Abfrage ausführen",
- "sf_runquery_badurl": "In der URL wurde nicht der Name des Formulars angegeben.\nDie URL sollte wie folgt aussehen: „Spezial:Abfrage_ausführen/<Formularname>”",
- "sf_runquery_title": "Ausgeführte Abfrage: $1",
- "sf_runquery_additionalquery": "Ergänzende Abfrage",
- "sf_formerrors_header": "Deine Eingabe ist fehlerhaft oder unvollständig. Siehe hierzu die Hinweise unten, neben dem jeweiligen Formularfeld.",
- "sf_too_few_instances_error": "Es müssen mindestens $1 Instanzen dieser Vorlage vorhanden sein.",
- "sf_too_many_instances_error": "Es dürfen nicht mehr als $1 Instanzen dieser Vorlage vorhanden sein.",
- "sf_blank_error": "Darf nicht leer sein",
- "sf_bad_url_error": "muss ein gültiges URL-Format haben, beginnend mit „http://“",
- "sf_bad_email_error": "muss ein gültiges E-Mail-Adressformat haben",
- "sf_bad_number_error": "muss eine gültige Zahl sein",
- "sf_bad_date_error": "muss ein gültiges Datum sein",
- "uploadwindow": "Formular zum Hochladen",
- "sf_deletionlog": "Lösch-Logbuch",
- "sf-preview-header": "Formularvorschau",
- "sf-preview-note": "So wird das Formular aussehen, wenn es in Gebrauch ist:",
- "sf-pageschemas-pagenameformula": "Seitennamenformel:",
- "sf-pageschemas-createtitle": "Name des Formulars für neue Seiten:",
- "sf-pageschemas-edittitle": "Name des Formulars für vorhandene Seiten:",
- "sf-pageschemas-inputtype": "Eingabetyp (leer lassen, um die Standardeinstellung zu nutzen):",
- "sf-pageschemas-otherparams": "Gib Parameternamen und ihre Werte als „key=value“-Paare ein, getrennt durch Kommas (Falls ein Wert ein Komma enthält, ersetze es durch „\\,“). Zum Beispiel: $1",
- "sf_property_isproperty": "Dies ist ein Attribut des Datentyps $1.",
- "sf_property_linkstoform": "Es verlinkt auf Seiten, die das Formular „$1“ nutzen.",
- "sf_property_allowedvals": "{{PLURAL:$1|Der mögliche Wert für dieses Attribut ist|Die möglichen Werte für dieses Attribut sind}}:",
- "sf_template_docu": "Dies ist die Vorlage „$1“.\nSie sollte im folgenden Format genutzt werden:",
- "sf_template_docufooter": "Klick auf „Bearbeiten“, um den Quelltext der Vorlage anzusehen.",
- "sf_form_docu": "Dies ist das Formular „$1“.\nUm eine Seite mit diesem Formular zu erstellen, gib den Seitennamen unten in das Eingabefeld ein.\nSofern bereits eine Seite mit diesem Namen vorhanden ist, wirst du automatisch zum Formular für das Bearbeiten der Seite weitergeleitet.",
- "sf_form_freetextlabel": "Freitext",
- "sf_category_hasdefaultform": "Diese Kategorie nutzt das Formular $1.",
- "sf_category_desc": "Dies ist die Kategorie $1.",
- "sf_blank_namespace": "Startseite",
- "right-viewedittab": "Den Reiter „{{int:edit}}“ auf Seiten sehen, die bearbeitet werden können",
- "right-editrestrictedfields": "Für die Bearbeitung beschränkte Formularfelder bearbeiten",
- "right-createclass": "Erstellen neuer semantischer Klassen",
- "action-createclass": "neue semantische Klassen zu erstellen",
- "action-editrestrictedfields": "für die Bearbeitung beschränkte Formularfelder zu bearbeiten",
- "action-viewedittab": "den Reiter „{{int:edit}}“ auf Seiten zu sehen, die bearbeitet werden können"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/diq.json b/SemanticForms/i18n/diq.json
deleted file mode 100644
index 69482acb..00000000
--- a/SemanticForms/i18n/diq.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Belekvor",
- "Erdemaslancan",
- "Gorizon",
- "Mirzali"
- ]
- },
- "sf_createproperty_propname": "Nameyo xısusi:",
- "templates": "Şabloni",
- "sf_createtemplate_deletefield": "Bestere",
- "sf_createclass_create": "İycad ke",
- "formedit": "Na former bıvurne",
- "sf_formedit_remove": "Hewad",
- "sf_formedit_none": "Çıno",
- "sf_template_docu": "No şablonê \"$1\"yo.\nBeno ke zey formatê cêrêni name bo:",
- "sf_template_docufooter": "Qandê Nusne na sabloner vinayışi na peler bıvurnê"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/dsb.json b/SemanticForms/i18n/dsb.json
deleted file mode 100644
index 7ad4b235..00000000
--- a/SemanticForms/i18n/dsb.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Michawiki"
- ]
- },
- "semanticforms-desc": "Formulary za pśidawanje a wobźěłowanje semantiskich datow",
- "specialpages-group-sf_group": "Semantiske formulary",
- "createproperty": "Kakosć napóraś",
- "sf_createproperty_linktoform": "Toś ta kakosć buźo k bokam wótkazowaś, kótarež wužywaju formular:",
- "sf_createproperty_allowedvalsinput": "Jolic coš za toś ta kakosć jano wěste gódnoty dowóliś, zapódaj lisćinu dowólonych gódnotow, wótźělonych pśez komy (jolic gódnota wopśimujo komu, wuměń ju pśez \"\\,\"):",
- "sf_createproperty_propname": "Mě kakosći:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Pśedłogi",
- "sf_templates_docu": "Slědujuce pśedłogi eksistěruju we wikiju.",
- "sf_templates_definescat": "definěrujo kategoriju: $1",
- "createtemplate": "Pśedłogu napóraś",
- "sf_createtemplate_namelabel": "Mě pśedłogi:",
- "sf_createtemplate_connectingproperty": "Mě kakosći, aby póla toś teje pśedłogi ze zbytkom boka zwězało:",
- "sf_createtemplate_categorylabel": "Pśez kategoriju definěrowana pśedłoga (opcionalny):",
- "sf_createtemplate_templatefields": "Póla pśedłogi",
- "sf_createtemplate_fieldsdesc": "Jolic póla w toś tej pśedłoze wěcej njamaju pólowe mjenja měś, zapódaj jadnorje indeks kuždego póla (na pś. 1, 2, 3 atd.) ako mě město aktualnego mjenja.",
- "sf_createtemplate_fieldname": "Mě póla:",
- "sf_createtemplate_displaylabel": "Etiket za zwobraznjenje:",
- "sf_createtemplate_semanticproperty": "Semantiska kakosć:",
- "sf_createtemplate_fieldislist": "Toś to pólo móžo lisćinu gódnotow wopśimjeś, wótźělonych pśez komy",
- "sf_createtemplate_aggregation": "Zrědowanje",
- "sf_createtemplate_aggregationdesc": "Aby nalicył na boku, kótaryž wužywa toś tu pśedłogu, wšykne boki, kótarež maju wěstu kakosć a kótaraž pokazujo na toś ten bok, pódaj dołojce góžecu se kakosć:",
- "sf_createtemplate_aggregationlabel": "Titel za lisćinu:",
- "sf_createtemplate_outputformat": "Wudawański format:",
- "sf_createtemplate_standardformat": "Tabela",
- "sf_createtemplate_infoboxformat": "Bocny infokašćik",
- "sf_createtemplate_addfield": "Pólo pśidaś",
- "sf_createtemplate_deletefield": "Wulašowaś",
- "forms": "Formulary",
- "sf_forms_docu": "Slědujuce formulary eksistěeruju we wikiju.",
- "sf_forminputs_mandatory": "Obligatoriske pólo",
- "sf_forminputs_restricted": "Jano administratory mógu toś to zapódawańske pólo wobźěłaś",
- "createform": "Formular napóraś",
- "sf_createform_nameinput": "Mě formulara",
- "sf_createform_nameinputdesc": "(formular dostanjo zwětšego samske mě ako jogo głowna pśedłoga):",
- "sf_createform_template": "Pśedłoga:",
- "sf_createform_templatelabelinput": "Pomjenjenje pśedłogi (opcionalny):",
- "sf_createform_allowmultiple": "Někotare (abo žedne) instance toś teje pśedłogi w napóranem boku dowóliś",
- "sf_createform_field": "Pólo:",
- "sf_createform_fieldprop": "Toś to pólo definěrujo kakosć $1 typa $2.",
- "sf_createform_fieldproplist": "Toś to pólo definěrujo lisćinu elementow, kótarež maju kakosć $1 typa $2.",
- "sf_createform_fieldpropunknowntype": "Toś to póla definěrujo kakosć $1 njepódanego typa.",
- "sf_createform_inputtype": "Typ zapódaś:",
- "sf_createform_inputtypedefault": "(standard)",
- "sf_createform_formlabel": "Pomjenjenje formulara:",
- "sf_createform_hidden": "Schowany",
- "sf_createform_removetemplate": "Pśedłogu wótpóraś",
- "sf_createform_addtemplate": "Pśedłogu pśidaś:",
- "sf_createform_atend": "Na kóńcu",
- "sf_createform_add": "Pśidaś",
- "sf_createform_choosefield": "Wubjeŕ pólo, kótarež coš pśidaś",
- "sf_createform_before": "Pśed pśedłogu:",
- "sf_createform_additembeforesave": "Musyš nanejmjenjej jadnu pśedłogu toś tomu formularoju pśidaś, nježli až móžoš jen składowaś.",
- "createcategory": "Kategoriju napóraś",
- "sf_createcategory_name": "Mě kategorije:",
- "sf_createcategory_defaultform": "Standardny formular:",
- "sf_createcategory_makesubcategory": "To k pódkategoriji drugeje kategorije cyniś (opcionalny):",
- "createclass": "Klasu napóraś",
- "sf_createclass_docu": "Zapódaj how wše daty, aby napórał kakosći, pśedłogu, formular a kategoriju za jadnotliwu klasu.\nZa dalšne opcije wužyj boki $1 město togo.",
- "sf_createclass_allowedvalues": "Dowólone gódnoty:",
- "sf_createclass_listofvalues": "Lisćina gódnotow?",
- "sf_createclass_missingvalues": "Nic wše póla su se wupołnili.",
- "sf_createclass_success": "Kakosći, pśedłoga, formular a kategorija se napóraju",
- "formstart": "Bok z formularom pśidaś",
- "sf_formstart_badform": "Zmólka: žeden formular njejo se namakał pla $1",
- "sf_formstart_badtitle": "Zmólka: \"$1\" jo njepłaśiwy titel za bok.",
- "sf_formstart_docu": "Zapódaj how mě boka, kótaryž ma se z formularom '$1' wobźěłaś.\nJolic toś ten bok južo eksistěrujo, buźoš se k formularoju za wobźěłowanje togo boka dalej pósrědnjaś.\nHowac buźoš se k formularoju za pśidawanje boka dalej pósrědnjaś.",
- "sf_formstart_noform_docu": "Zapódaj how mě boka a wubjeŕ formular, z kótarymž coš jen wobźěłaś.\nJolic toś ten bok južo eksistěrujo, buźoš se k formularoju za wobźěłowanje togo boka dalej pósrědnjaś.\nHowac buźoš se k formularoju za pśidawanje boka dalej pósrědnjaś.",
- "sf_formstart_createoredit": "Napóraś abo wobźěłaś",
- "formedit": "Z formularom wobźěłaś",
- "sf_formedit_createtitle": "$1 napóraś: $2",
- "sf_formedit_badurl": "To jo bok za wobźěłowanje z formularom. Musyš ako mě formulara tak teke celowy bok w URL pódaś; URL by měł kaž 'Special:FormEdit?form=<mě formulara>&target=<celowy bok>' abo 'Special:FormEdit/<mě formulara>/<celowy bok>' wuglědaś.",
- "sf_formedit_altforms": "Móžoš město togo toś ten bok z jadnym ze slědujucych formularow pśidaś:",
- "sf_formedit_altformsonly": "Pšosym wubjeŕ jaden ze slědujucych formularow, aby pśidał toś ten bok:",
- "sf_formcreate": "Z formularom napóraś",
- "sf_viewform": "Formular se woglědaś",
- "sf_editsource": "Žrědło wobźěłaś",
- "sf_formedit_edittitle": "$1 wobźěłaś: $2",
- "sf_formedit_morethanoneform": "Warnowanje: Za toś ten bok jo se definěrował wěcej ako jaden standardny formular.",
- "sf_formedit_formwarning": "Warnowanje: Toś ten bok <a href=\"$1\">južo eksistěrujo</a>, ale njewužywa toś ten formular.",
- "sf_formedit_remove": "Toś tu instancu wótpóraś",
- "sf_formedit_addanother": "Drugi pśidaś",
- "sf_formedit_none": "Žeden",
- "runquery": "Wótpšašanje startowaś",
- "sf_runquery_badurl": "Musyš formularne mě w URL pódaś;\nURL měł wuglědaś ako 'Special:RunQuery/<formularne mě>'.",
- "sf_runquery_title": "Start wótpšašanja: $1",
- "sf_runquery_additionalquery": "Pśidatne wótpšašanje",
- "sf_formerrors_header": "Su zmólki w zapódaśu twójogo formulara; glědaj dołojce",
- "sf_blank_error": "njesmějo prozny byś",
- "sf_bad_url_error": "musy korektny format URL měś a se z \"http://\" zachopiś",
- "sf_bad_email_error": "musy płaśiwy format e-mailoweje adresy měś",
- "sf_bad_number_error": "musy płaśiwa licba byś",
- "sf_bad_date_error": "musy płaśiwy datum byś",
- "uploadwindow": "Wokno nagraśow",
- "sf_deletionlog": "protokol wulašowanjow",
- "sf_property_isproperty": "To jo kakosć typa $1.",
- "sf_property_linkstoform": "Wótkazujo k bokam, kótarež wužywaju formular $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Dowólona gódnota za toś tu kakosć jo|Dowólonej gódnośe za toś tu kakosć stej|Dowólone gódnoty za toś tu kakosć su|Dowólone gódnoty za toś tu kakosć su}}:",
- "sf_template_docu": "To jo pśedłof '$1'.\nBy se měł w slědujucem formaśe wuwołaś:",
- "sf_template_docufooter": "Wobźěłaj bok, aby wiźeł tekst pśedłogi.",
- "sf_form_docu": "To jo formular \"$1\".\nAby napórał bok z toś tym formularom, zapódaj dołojce mě boka;\njolic bok z tym mjenim južo eksistěrujo, buźoš se k formularoju dalej pósrědnjaś, aby ten bok wobźěłał.",
- "sf_form_freetextlabel": "Lichy tekst",
- "sf_category_hasdefaultform": "Toś ta kategorija wužywa formular $1.",
- "sf_category_desc": "To jo kategorija $1.",
- "sf_blank_namespace": "Głowny",
- "right-viewedittab": "Rejtark \"{{int:edit}}\" za boki, kótarež su wobźěłujobne pśez formular, se woglědaś",
- "right-editrestrictedfields": "Wobgranicowane formularne póla wobźěłaś"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ee.json b/SemanticForms/i18n/ee.json
deleted file mode 100644
index cd528e63..00000000
--- a/SemanticForms/i18n/ee.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "@metadata": {
- "authors": []
- },
- "sf_createtemplate_deletefield": "Tutui"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/el.json b/SemanticForms/i18n/el.json
deleted file mode 100644
index b6c94fb1..00000000
--- a/SemanticForms/i18n/el.json
+++ /dev/null
@@ -1,202 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Consta",
- "Crazymadlover",
- "Omnipaedista",
- "Protnet",
- "ZaDiak",
- "Απεργός"
- ]
- },
- "semanticforms-desc": "Φόρμες για την προσθήκη και επεξεργασία σημασιολογικών δεδομένων",
- "specialpages-group-sf_group": "Σημασιολογικές Φόρμες",
- "createproperty": "Δημιουργία ιδιότητας",
- "sf-createproperty-with-name": "Δημιουργία ιδιότητας: $1",
- "sf_createproperty_linktoform": "Αυτή η ιδιότητα θα δημιουργήσει συνδέσμους προς σελίδες που χρησιμοποιούν τη φόρμα:",
- "sf_createproperty_allowedvalsinput": "Εάν θέλετε αυτή η ιδιότητα να μπορεί να πάρει μόνο συγκεκριμένες τιμές, εισαγάγετε μια λίστα με τις επιτρεπτές τιμές, διαχωρισμένες με κόμμα (αν μια τιμή περιέχει κόμμα, αντικαταστήστε το με \"\\,\"):",
- "sf_createproperty_propname": "Όνομα ιδιότητας:",
- "sf_createproperty_proptype": "Τύπος:",
- "templates": "Πρότυπα",
- "sf_templates_docu": "Στο wiki υπάρχουν τα παρακάτω πρότυπα.",
- "sf_templates_definescat": "ορίζει την κατηγορία: $1",
- "createtemplate": "Δημιουργία προτύπου",
- "sf-createtemplate-with-name": "Δημιουργία προτύπου: $1",
- "sf_createtemplate_namelabel": "Όνομα προτύπου:",
- "sf_createtemplate_multipleinstance": "Αυτό το πρότυπο μπορεί να συμπεριληφθεί πολλές φορές στη σελίδα.",
- "sf_createtemplate_categorylabel": "Κατηγορία οριζόμενη από πρότυπο (προαιρετικό):",
- "sf_createtemplate_templatefields": "Πεδία προτύπου",
- "sf_createtemplate_fieldsdesc": "Για να μην χρειάζονται ονόματα τα πεδία αυτού του προτύπου, απλά εισάγετε τον αύξοντα αριθμό κάθε πεδίου (π.χ. 1, 2, 3, κ.λ.π.) σαν όνομα, αντί για το κανονικό όνομα",
- "sf_createtemplate_fieldname": "Όνομα πεδίου:",
- "sf_createtemplate_displaylabel": "Εμφανιζόμενη ετικέτα:",
- "sf_createtemplate_semanticproperty": "Σημασιολογική ιδιότητα:",
- "sf_createtemplate_fieldislist": "Αυτό το πεδίο μπορεί να δεχτεί μια λίστα τιμών, διαχωρισμένων με κόμματα",
- "sf_createtemplate_aggregation": "Συνάθροιση",
- "sf_createtemplate_aggregationdesc": "Για να εμφανίσετε, σε οποιαδήποτε σελίδα χρησιμοποιεί αυτό το πρότυπο, μια λίστα όλων των σελίδων που έχουν μια ορισμένη ιδιότητα που οδηγεί σε αυτήν τη σελίδα, καθορίστε την κατάλληλη ιδιότητα παρακάτω:",
- "sf_createtemplate_aggregationlabel": "Τίτλος για τη λίστα:",
- "sf_createtemplate_outputformat": "Μορφή δεδομένων εξόδου:",
- "sf_createtemplate_standardformat": "Πίνακας",
- "sf_createtemplate_infoboxformat": "Πλευρικό κουτί πληροφοριών",
- "sf_createtemplate_plainformat": "Απλό κείμενο",
- "sf_createtemplate_sectionsformat": "Ενότητες",
- "sf_createtemplate_addfield": "Προσθήκη πεδίου",
- "sf_createtemplate_deletefield": "Διαγραφή",
- "forms": "Φόρμες",
- "sf_forms_docu": "Στο wiki υπάρχουν οι παρακάτω φόρμες.",
- "sf_forminputs_mandatory": "Υποχρεωτικό",
- "sf_forminputs_restricted": "Μόνο οι διαχειριστές μπορούν να επεξεργαστούν αυτό το πλαίσιο εισαγωγής δεδομένων",
- "sf_forminputs_class": "Το χαρακτηριστικό «class» της HTML για αυτό το πλαίσιο εισαγωγής δεδομένων",
- "sf_forminputs_default": "Η προεπιλεγμένη τιμή για αυτό το πλαίσιο εισαγωγής δεδομένων",
- "sf_forminputs_preload": "Μια σελίδα wiki το περιεχόμενο της οποίας θα γίνει η προεπιλεγμένη τιμή αυτού του πλαισίου εισαγωγής δεδομένων",
- "sf_forminputs_property": "Σημασιολογική ιδιότητα στην οποία αντιστοιχεί αυτό το πεδίο",
- "sf_forminputs_size": "Το μέγεθος αυτού του πεδίο κειμένου, σε χαρακτήρες",
- "sf_forminputs_maxlength": "Το μέγιστο επιτρεπόμενο μήκος του κειμένου σε αυτό το πεδίο",
- "sf_forminputs_placeholder": "Κείμενο βοήθειας που εμφανίζεται εντός του πλαισίου εισόδου δεδομένων έως ότου ο χρήστης να κάνει κλικ πάνω σε αυτό",
- "sf_forminputs_uploadable": "Τοποθέτηση συνδέσμου «{{int:upload}}» δίπλα σε αυτό το πλαίσιο εισαγωγής δεδομένων",
- "sf_forminputs_defaultfilename": "Το προεπιλεγμένο όνομα αρχείου για τα αρχεία που ανεβάζονται",
- "sf_forminputs_rows": "Ο αριθμός των γραμμών κειμένου για αυτό το πλαίσιο εισαγωγής δεδομένων",
- "sf_forminputs_cols": "Ο αριθμός των στηλών κειμένου για αυτό το πλαίσιο εισαγωγής δεδομένων",
- "sf_forminputs_autogrow": "Αυτό το πλαίσιο εισαγωγής δεδομένων να αυξάνει σε μέγεθος, εάν το κείμενο υπερβαίνει τα όριά του",
- "sf_forminputs_valuesfromproperty": "Μια ιδιότητα της οποίας οι τιμές σε αυτό το wiki να είναι το σύνολο τιμών αυτού του πλαισίου εισαγωγής δεδομένων",
- "sf_forminputs_valuesfromcategory": "Μια κατηγορία της οποίας οι σελίδες να είναι το σύνολο τιμών αυτού του πλαισίου εισαγωγής δεδομένων",
- "sf_forminputs_valuesfromnamespace": "Ένας χώρος ονομάτων του οποίου οι σελίδες να είναι το σύνολο τιμών αυτού του πλαισίου εισαγωγής δεδομένων",
- "sf_forminputs_valuesfromconcept": "Μια σελίδα «έννοιας» του Σημασιολογικού MediaWiki της οποίας οι σελίδες να είναι το σύνολο τιμών αυτού του πλαισίου εισαγωγής δεδομένων",
- "sf_forminputs_valuesfromurl": "Μια διεύθυνση URL που περιέχει δομημένα δεδομένα τα οποία να είναι το σύνολο τιμών αυτού του πλαισίου εισαγωγής δεδομένων",
- "sf_forminputs_values": "Το σύνολο τιμών αυτού του πλαισίου εισαγωγής δεδομένων, διαχωρισμένων με κόμματα",
- "sf_forminputs_list": "Αυτό το πλαίσιο εισαγωγής δεδομένων να δέχεται λίστα τιμών",
- "sf_forminputs_delimiter": "Το διαχωριστικό σύμβολο μεταξύ τιμών πεδίου, αν αυτό το πλαίσιο εισαγωγής δεδομένων δέχεται λίστα τιμών.",
- "sf_forminputs_remoteautocompletion": "Χρήση απομακρυσμένης αυτόματης συμπλήρωσης",
- "sf_forminputs_existingvaluesonly": "Να επιτρέπονται μόνο τιμές που υπάρχουν στη λίστα",
- "sf_forminputs_showonselect": "Στοιχεία σελίδας που να εμφανίζονται μόνο αν επιλέγονται συγκεκριμένες τιμές (παράδειγμα: «τιμή1=>div1,τιμή2=>div2»)",
- "sf_forminputs_listboxsize": "Το ύψος αυτού του πλαισίου λίστας, σε γραμμές κειμένου",
- "sf_forminputs_includetimezone": "Συμπερίληψη ενός πλαισίου εισαγωγής δεδομένων για τη ζώνη ώρας",
- "sf_forminputs_topcategory": "Η μητρική κατηγορία αυτού του συνόλου κατηγοριών (απαιτείται)",
- "sf_forminputs_hideroot": "Απόκρυψη της μητρικής κατηγορίας",
- "sf_forminputs_depth": "Ο αριθμός επιπέδων των κατηγοριών που να εμφανίζονται αρχικά",
- "sf_forminputs_height": "Το ύψος αυτού του πλαισίου εισόδου δεδομένων, σε εικονοστοιχεία",
- "sf_forminputs_width": "Το πλάτος αυτού του πλαισίου εισόδου δεδομένων, σε εικονοστοιχεία",
- "createform": "Δημιουργία φόρμας",
- "sf-createform-with-name": "Δημιουργία φόρμας: $1",
- "sf_createform_nameinput": "Όνομα φόρμας",
- "sf_createform_nameinputdesc": "(στη φόρμα δίνεται συνήθως το ίδιο όνομα με το κύριό της πρότυπο):",
- "sf_createform_template": "Πρότυπο:",
- "sf_createform_templatelabelinput": "Ετικέτα προτύπου (προαιρετικό):",
- "sf_createform_allowmultiple": "Να επιτρέπονται πολλαπλά (ή μηδέν) στιγμιότυπα αυτού του προτύπου στη δημιουργηθείσα σελίδα",
- "sf_createform_field": "Πεδίο:",
- "sf_createform_fieldprop": "Αυτό το πεδίο ορίζει την ιδιότητα $1, τύπου $2.",
- "sf_createform_fieldproplist": "Αυτό το πεδίο ορίζει μια λίστα στοιχείων που έχουν την ιδιότητα $1, τύπου $2.",
- "sf_createform_fieldpropunknowntype": "Αυτό το πεδίο ορίζει την ιδιότητα $1, απροσδιορίστου τύπου.",
- "sf_createform_inputtype": "Τύπος εισόδου:",
- "sf_createform_inputtypedefault": "(προεπιλογή)",
- "sf_createform_formlabel": "Ετικέτα φόρμας:",
- "sf_createform_hidden": "Κρυμμένος",
- "sf_createform_removetemplate": "Αφαίρεση προτύπου",
- "sf_createform_addtemplate": "Προσθήκη προτύπου:",
- "sf_createform_atend": "Στο τέλος",
- "sf_createform_add": "Προσθήκη",
- "sf_createform_choosefield": "Επιλογή πεδίου για να προστεθεί",
- "sf_createform_pagesection": "Ενότητα σελίδας:",
- "sf_createform_addsection": "Προσθήκη ενότητας",
- "sf_createform_removesection": "Αφαίρεση ενότητας",
- "sf_createform_before": "Πριν:",
- "sf_createform_addelements": "Προσθήκη στοιχείων",
- "sf_createform_hiddensection": "Αυτό το πλαίσιο εισαγωγής δεδομένων είναι κρυμμένο στη φόρμα",
- "sf_createform_sectionlevel": "Επίπεδο ενότητας:",
- "sf_createform_sectionname": "Όνομα ενότητας",
- "sf_createform_additembeforesave": "Πρέπει να προσθέσετε τουλάχιστον ένα πρότυπο ή μια ενότητα σελίδας σε αυτήν τη φόρμα για να μπορείτε να την αποθηκεύσετε.",
- "sf_createform_otherparameters": "Άλλες παράμετροι",
- "createcategory": "Δημιουργία κατηγορίας",
- "sf-createcategory-with-name": "Δημιουργία κατηγορίας: $1",
- "sf_createcategory_name": "Όνομα κατηγορίας:",
- "sf_createcategory_defaultform": "Προεπιλεγμένη φόρμα:",
- "sf_createcategory_makesubcategory": "Να γίνει υποκατηγορία μιας άλλης κατηγορίας (προαιρετικό):",
- "createclass": "Δημιουργία κλάσης",
- "sf_createclass_docu": "Εισαγάγετε όλα τα δεδομένα εδώ για να δημιουργήσετε ιδιότητες, πρότυπο, φόρμα και κατηγορία που ορίζουν μία κλάση. Για περισσότερες επιλογές, χρησιμοποιήστε αντ' αυτού τις σελίδες $1.",
- "sf_createclass_allowedvalues": "Επιτρεπτές τιμές:",
- "sf_createclass_listofvalues": "Κατάλογος τιμών;",
- "sf_createclass_nameinput": "Όνομα φόρμας:",
- "sf_createclass_missingvalues": "Δεν συμπληρώθηκαν όλα τα απαραίτητα πεδία.",
- "sf_createclass_success": "Οι ιδιότητες, το πρότυπο, η φόρμα και η κατηγορία θα δημιουργηθούν.",
- "sf_createclass_create": "Δημιουργία",
- "formstart": "Εκκίνηση φόρμας",
- "sf_formstart_badform": "Σφάλμα: Δεν βρέθηκε φόρμα στη σελίδα «$1».",
- "sf_formstart_badtitle": "Σφάλμα: Το «$1» είναι μη έγκυρος τίτλος σελίδας.",
- "sf_formstart_docu": "Εισαγάγετε το όνομα μιας σελίδας εδώ, για να την επεξεργαστείτε με τη φόρμα «$1».\nΕάν υπάρχει ήδη αυτή η σελίδα, θα μεταφερθείτε στη φόρμα για την επεξεργασία της.\nΣε αντίθετη περίπτωση, θα μεταφερθείτε στη φόρμα για την προσθήκη της σελίδας.",
- "sf_formstart_noform_docu": "Εισαγάγετε εδώ το όνομα μιας σελίδας και επιλέξτε τη φόρμα με την οποία θα την επεξεργαστείτε.\nΕάν υπάρχει ήδη αυτή η σελίδα, θα μεταφερθείτε στη φόρμα για την επεξεργασία της.\nΣε αντίθετη περίπτωση, θα μεταφερθείτε στη φόρμα για την προσθήκη της σελίδας.",
- "sf_formstart_createoredit": "Δημιουργία ή επεξεργασία",
- "formedit": "Επεξεργασία με φόρμα",
- "sf_formedit_createtitle": "Δημιουργία $1: $2",
- "sf_formedit_createtitlenotarget": "Δημιουργία $1",
- "sf_formedit_badurl": "Αυτή είναι η σελίδα για επεξεργασία με φόρμα. Θα πρέπει να καθορίσετε ένα όνομα φόρμας καθώς και μια σελίδα προορισμού μέσα στη διεύθυνση URL.\nΘα πρέπει να μοιάζει με 'Ειδικό:FormEdit?form=<όνομα φόρμας>&target=<σελίδα προορισμού>', ή 'Ειδικό:FormEdit/<όνομα φόρμας>/<σελίδα προορισμού>'.",
- "sf_formedit_altforms": "Αντ' αυτού, μπορείτε να προσθέσετε αυτήν τη σελίδα με μία από τις ακόλουθες φόρμες:",
- "sf_formedit_altformsonly": "Παρακαλούμε επιλέξτε μία από τις ακόλουθες φόρμες για να την προσθέσετε σε αυτήν τη σελίδα:",
- "sf_formcreate": "Δημιουργία με φόρμα",
- "sf_viewform": "Προβολή φόρμας",
- "sf_editsource": "Επεξεργασία κώδικα",
- "sf_formedit_edittitle": "Επεξεργασία $1: $2",
- "sf_formedit_morethanoneform": "'''Προειδοποίηση:''' Έχουν οριστεί περισσότερες από μία προεπιλεγμένες φόρμες για αυτήν τη σελίδα.",
- "sf_formedit_formwarning": "Προειδοποίηση: Αυτή η σελίδα <a href=\"$1\">υπάρχει ήδη</a>, αλλά δεν χρησιμοποιεί αυτή τη φόρμα.",
- "sf_formedit_mismatchedbrackets": "Προειδοποίηση: Αυτή η σελίδα περιέχει σγουρές ή τετράγωνες αγκύλες που δεν έχουν κλείσει, οπότε η φόρμα δεν θα τη χειριστεί σωστά. Παρακαλώ <a href=\"$1\">διορθώστε το σφάλμα στον πηγαίο κώδικα</a> πριν συνεχίσετε.",
- "sf_formedit_remove": "Αφαίρεση αυτού του στιγμιότυπου",
- "sf_formedit_addanotherabove": "Προσθήκη ενός ακόμα στιγμιότυπου πάνω από αυτό",
- "sf_formedit_addanother": "Προσθήκη κι άλλου",
- "sf_formedit_none": "Κανένα",
- "sf_formedit_emptytitle": "Σφάλμα: Τα δεδομένα που εισαγάγατε έχουν ως αποτέλεσμα έναν κενό τίτλο σελίδας.",
- "sf_formedit_hookerror": "Σφάλμα: Μια επέκταση MediaWiki εμπόδισε την τροποποίηση της σελίδας προορισμού.",
- "sf_formedit_saveandcontinueediting": "Αποθήκευση και συνέχεια",
- "sf_formedit_saveandcontinue_summary": "Αποθήκευση με χρήση του κουμπιού «$1» στη φόρμα",
- "sf_formedit_tooltip_saveandcontinueediting": "Αποθήκευση δεδομένων και συνέχεια επεξεργασίας",
- "sf_autoedit_anoneditwarning": "Προειδοποίηση: Δεν έχετε συνδεθεί. Η διεύθυνση IP σας θα καταγραφεί στο ιστορικό επεξεργασίας αυτής της σελίδας.",
- "sf_autoedit_success": "Το [[$1]] τροποποιήθηκε επιτυχώς μέσω της φόρμας $2.",
- "sf_autoedit_fail": "Η τροποποίηση του [[$1]] απέτυχε.",
- "sf_autoedit_notargetspecified": "Δεν έχει οριστεί σελίδα προορισμού.",
- "sf_autoedit_invalidtargetspecified": "Η σελίδα προορισμού $1 που καθορίζεται δεν είναι έγκυρη.",
- "sf_autoedit_invalidform": "Η $1 δεν είναι έγκυρη φόρμα.",
- "sf_autoedit_redirectlimitexeeded": "Έχετε υπερβεί το μέγιστο όριο ανακατευθύνσεων για τη φόρμα $1.",
- "sf_autoedit_invalidredirecttarget": "Η σελίδα $1 δεν αποτελεί έγκυρο προορισμό ανακατεύθυνσης για τη φόρμα $2.",
- "sf_autoedit_invalidpreloadspecified": "Η σελίδα προφόρτωσης $1 που καθορίζεται δεν είναι έγκυρη.",
- "sf_autoedit_redlinkexists": "Η σελίδα $1 υπάρχει ήδη.",
- "sf_autoedit_noformfound": "Δεν έχει οριστεί φόρμα.",
- "sf_autoedit_toomanyformsfound": "Περισσότερες από μία φόρμες διαθέσιμες για τη σελίδα.",
- "sf_autoedit_readonly": "Η βάση δεδομένων είναι κλειδωμένη απέναντι σε τροποποιήσεις αυτή τη στιγμή. Αιτία: $1",
- "sf_autoedit_nosemanticform": "Δεν ήταν δυνατή η χρήση της φόρμας $2 για τη σελίδα $1. Δείτε [[{{#special:FormEdit}}/$2/$1]] για λεπτομέρειες.",
- "sf_autoedit_summary": "Έγινε αυτόματη επεξεργασία από τη σελίδα $1.",
- "sf-autoedit-wait": "Περιμένετε...",
- "runquery": "Εκτέλεση ερωτήματος",
- "sf_runquery_badurl": "Πρέπει να καθορίσετε ένα όνομα φόρμας μέσα στη διεύθυνση URL.\nΗ διεύθυνση URL θα πρέπει να είναι της μορφής «Special:RunQuery/<όνομα φόρμας>».",
- "sf_runquery_title": "Εκτέλεση ερωτήματος: $1",
- "sf_runquery_additionalquery": "Επιπρόσθετο ερώτημα",
- "sf_formerrors_header": "Παρουσιάστηκαν σφάλματα με τα δεδομένα που εισαγάγατε στη φόρμα. Δείτε παρακάτω.",
- "sf_too_few_instances_error": "Πρέπει να {{PLURAL:$1|υπάρχει τουλάχιστον ένα στιγμιότυπο|υπάρχουν τουλάχιστον $1 στιγμιότυπα}} αυτού του προτύπου.",
- "sf_too_many_instances_error": "Δεν πρέπει να υπάρχουν περισσότερα από {{PLURAL:$1| ένα|$1}} στιγμιότυπα αυτού του προτύπου.",
- "sf_blank_error": "δεν μπορεί να είναι κενό",
- "sf_bad_url_error": "απαιτείται η σωστή μορφή διεύθυνσης URL, που ξεκινάει με \"http\"",
- "sf_bad_email_error": "απαιτείται μια έγκυρη μορφή διεύθυνσης email",
- "sf_bad_number_error": "πρέπει να είναι ένας έγκυρος αριθμός",
- "sf_bad_date_error": "πρέπει να είναι μια έγκυρη ημερομηνία",
- "uploadwindow": "Παράθυρο ανεβάσματος",
- "sf_deletionlog": "Αρχείο καταγραφής διαγραφών",
- "sf-preview-header": "Προεπισκόπηση φόρμας",
- "sf-preview-note": "Έτσι θα φαίνεται η φόρμα όταν θα είναι σε χρήση:",
- "sf-pageschemas-pagenameformula": "Μαθηματικός τύπος ονόματος σελίδας:",
- "sf-pageschemas-createtitle": "Τίτλος φόρμας για νέες σελίδες:",
- "sf-pageschemas-edittitle": "Τίτλος φόρμας για υπάρχουσες σελίδες:",
- "sf-pageschemas-inputtype": "Τύπος πλαισίου εισαγωγής δεδομένων (αφήστε το κενό για προεπιλογή)",
- "sf-pageschemas-otherparams": "Εισαγάγετε ονόματα παραμέτρων και τις τιμές τους ως ζεύγη του τύπου κλειδί=τιμή, διαχωρίζοντάς τα με κόμμα (εάν μια τιμή περιέχει κόμμα, αντικαταστήστε το με \"\\,\"). Για παράδειγμα: $1",
- "sf_property_isproperty": "Αυτή είναι ιδιότητα τύπου $1.",
- "sf_property_linkstoform": "Συνδέει σε σελίδες που χρησιμοποιούν τη φόρμα $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Η επιτρεπτή τιμή|Οι επιτρεπτές τιμές}} για αυτήν την ιδιότητα είναι:",
- "sf_template_docu": "Αυτό είναι το πρότυπο «$1».\nΘα πρέπει να καλείται με την ακόλουθη μορφή:",
- "sf_template_docufooter": "Επεξεργαστείτε τη σελίδα για να δείτε τον κώδικα του προτύπου",
- "sf_form_docu": "Αυτή είναι η φόρμα «$1».\nΓια να δημιουργήσετε σελίδα με αυτήν τη φόρμα, εισαγάγετε το όνομα της σελίδας παρακάτω.\nΑν υπάρχει ήδη σελίδα με αυτό το όνομα, θα μεταβείτε σε φόρμα για να επεξεργαστείτε αυτήν τη σελίδα.",
- "sf_form_freetextlabel": "Ελεύθερο κείμενο",
- "sf_category_hasdefaultform": "Αυτή η κατηγορία χρησιμοποιεί την φόρμα $1.",
- "sf_category_desc": "Αυτή είναι η κατηγορία $1.",
- "sf_blank_namespace": "Κύριος",
- "right-viewedittab": "Προβολή καρτέλας «{{int:edit}}» για σελίδες επεξεργάσιμες με φόρμα",
- "right-editrestrictedfields": "Επεξεργασία περιορισμένων πεδίων φόρμας",
- "right-createclass": "Δημιουργία νέων σημασιολογικών κλάσεων",
- "action-createclass": "δημιουργία νέων σημασιολογικών κλάσεων",
- "action-editrestrictedfields": "επεξεργασία μη επιτρεπτών πεδίων φόρμας",
- "action-viewedittab": "προβολή καρτέλας «{{int:edit}}» για σελίδες επεξεργάσιμες με φόρμα"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/en.json b/SemanticForms/i18n/en.json
deleted file mode 100644
index d78b8e4c..00000000
--- a/SemanticForms/i18n/en.json
+++ /dev/null
@@ -1,208 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Yaron Koren"
- ]
- },
- "semanticforms-desc": "Forms for adding and editing semantic data",
- "specialpages-group-sf_group": "Semantic Forms",
- "createproperty": "Create a property",
- "sf-createproperty-with-name": "Create property: $1",
- "sf_createproperty_linktoform": "This property will link to pages that use the form:",
- "sf_createproperty_allowedvalsinput": "If you want this property to only be allowed to have certain values, enter the list of allowed values, separated by commas (if a value contains a comma, replace it with \"\\,\"):",
- "sf_createproperty_propname": "Property name:",
- "sf_createproperty_proptype": "Type:",
- "sf_createproperty_editsummary": "Created a property of type [[Has type::$1]]",
- "templates": "Templates",
- "sf_templates_docu": "The following templates exist in the wiki.",
- "sf_templates_definescat": "defines category: $1",
- "createtemplate": "Create a template",
- "sf-createtemplate-with-name": "Create template: $1",
- "sf_createtemplate_namelabel": "Template name:",
- "sf_createtemplate_multipleinstance": "This template can be included multiple times on the page.",
- "sf_createtemplate_connectingproperty": "Name of property to connect this template's fields to the rest of the page:",
- "sf_createtemplate_categorylabel": "Category defined by template (optional):",
- "sf_createtemplate_templatefields": "Template fields",
- "sf_createtemplate_fieldsdesc": "To have the fields in this template no longer require field names, simply enter the index of each field (e.g. 1, 2, 3, etc.) as the name, instead of an actual name.",
- "sf_createtemplate_fieldname": "Field name:",
- "sf_createtemplate_displaylabel": "Display label:",
- "sf_createtemplate_semanticproperty": "Semantic property:",
- "sf_createtemplate_fieldislist": "This field can hold a list of values, separated by commas",
- "sf_createtemplate_aggregation": "Aggregation",
- "sf_createtemplate_aggregationdesc": "To list, on any page using this template, all of the pages that have a certain property pointing to that page, specify the appropriate property below:",
- "sf_createtemplate_aggregationlabel": "Title for list:",
- "sf_createtemplate_outputformat": "Output format:",
- "sf_createtemplate_standardformat": "Table",
- "sf_createtemplate_infoboxformat": "Side infobox",
- "sf_createtemplate_plainformat": "Plain text",
- "sf_createtemplate_sectionsformat": "Sections",
- "sf_createtemplate_addfield": "Add field",
- "sf_createtemplate_deletefield": "Delete",
- "forms": "Forms",
- "sf_forms_docu": "The following forms exist in the wiki.",
- "sf_forminputs_mandatory": "A value must be entered for this input",
- "sf_forminputs_restricted": "Only administrators can edit this input",
- "sf_forminputs_class": "The HTML \"class\" attribute for this input",
- "sf_forminputs_default": "The default value for this input",
- "sf_forminputs_preload": "A wiki page whose contents will become this input's default value",
- "sf_forminputs_property": "A semantic property that this field corresponds to",
- "sf_forminputs_size": "The size of this text field, in characters",
- "sf_forminputs_maxlength": "The maximum allowed length of the text in this field",
- "sf_forminputs_placeholder": "Help text that appears in the input until the user clicks on it",
- "sf_forminputs_uploadable": "Place an \"{{int:upload}}\" link next to this input",
- "sf_forminputs_defaultfilename": "The default filename for uploaded files",
- "sf_forminputs_rows": "The number of rows for this input",
- "sf_forminputs_cols": "The number of columns for this input",
- "sf_forminputs_autogrow": "Set this input to grow in size if the text exceeds its boundaries",
- "sf_forminputs_valuesfromproperty": "A property whose values in the wiki should be this input's set of values",
- "sf_forminputs_valuesfromcategory": "A category whose pages should be this input's set of values",
- "sf_forminputs_valuesfromnamespace": "A namespace whose pages should be this input's set of values",
- "sf_forminputs_valuesfromconcept": "A Semantic MediaWiki \"concept\" page whose pages should be this input's set of values",
- "sf_forminputs_valuesfromurl": "A URL holding structured data that should be this input's set of values",
- "sf_forminputs_values": "The set of values for this input, separated by commas",
- "sf_forminputs_list": "Mark this input as holding a list of values",
- "sf_forminputs_delimiter": "The delimiter between field values, if this input holds a list of them",
- "sf_forminputs_remoteautocompletion": "Use remote autocompletion",
- "sf_forminputs_existingvaluesonly": "Allow only values already in the list",
- "sf_forminputs_showonselect": "Page elements to display only if certain values are selected (example: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "The height of this listbox, in rows",
- "sf_forminputs_includetimezone": "Include an input for the time zone",
- "sf_forminputs_topcategory": "The parent category of a set of categories",
- "sf_forminputs_structure": "A manual list of values, done as an unordered list of values in wikitext",
- "sf_forminputs_hideroot": "Hide the parent category",
- "sf_forminputs_depth": "The number of levels of categories to show initially",
- "sf_forminputs_height": "The height of this input, in pixels",
- "sf_forminputs_width": "The width of this input, in pixels",
- "sf_forminputs_checkboxes_select_all": "Select all",
- "sf_forminputs_checkboxes_select_none": "Select none",
- "sf_forminputs_maxvalues": "Maximum number of values allowed for a field that holds multiple values",
- "createform": "Create a form",
- "sf-createform-with-name": "Create form: $1",
- "sf_createform_nameinput": "Form name",
- "sf_createform_nameinputdesc": "(the form is usually given the same name as its main template):",
- "sf_createform_template": "Template:",
- "sf_createform_templatelabelinput": "Template label (optional):",
- "sf_createform_allowmultiple": "Allow for multiple (or zero) instances of this template in the created page",
- "sf_createform_field": "Field:",
- "sf_createform_fieldprop": "This field defines the property $1, of type $2.",
- "sf_createform_fieldproplist": "This field defines a list of elements that have the property $1, of type $2.",
- "sf_createform_fieldpropunknowntype": "This field defines the property $1, of unspecified type.",
- "sf_createform_inputtype": "Input type:",
- "sf_createform_inputtypedefault": "(default)",
- "sf_createform_formlabel": "Form label:",
- "sf_createform_hidden": "Hidden",
- "sf_createform_removetemplate": "Remove template",
- "sf_createform_addtemplate": "Add template:",
- "sf_createform_atend": "At end",
- "sf_createform_add": "Add",
- "sf_createform_choosefield": "Choose a field to add",
- "sf_createform_pagesection": "Page section:",
- "sf_createform_addsection": "Add section",
- "sf_createform_removesection": "Remove section",
- "sf_createform_before": "Before:",
- "sf_createform_addelements": "Add elements",
- "sf_createform_hiddensection": "This input is hidden in the form",
- "sf_createform_sectionlevel": "Section level:",
- "sf_createform_sectionname": "Section name",
- "sf_createform_additembeforesave": "You must add at least one template or page section to this form before you can save it.",
- "sf_createform_otherparameters": "Other parameters",
- "createcategory": "Create a category",
- "sf-createcategory-with-name": "Create category: $1",
- "sf_createcategory_name": "Category name:",
- "sf_createcategory_defaultform": "Default form:",
- "sf_createcategory_makesubcategory": "Make this a subcategory of another category (optional):",
- "createclass": "Create a class",
- "sf_createclass_docu": "Enter all the data here to create the properties, template, form and category for a single class. For more options, use the pages $1 instead.",
- "sf_createclass_allowedvalues": "Allowed values:",
- "sf_createclass_listofvalues": "List of values?",
- "sf_createclass_nameinput": "Form name:",
- "sf_createclass_missingvalues": "Not all required fields were filled out.",
- "sf_createclass_success": "Properties, template, form and category will be created.",
- "sf_createclass_create": "Create",
- "formstart": "Start of form",
- "sf_formstart_badform": "Error: No form was found on page \"$1\".",
- "sf_formstart_badtitle": "Error: \"$1\" is an invalid page title.",
- "sf_formstart_docu": "Enter the name of a page here, to be edited with the form \"$1\".\nIf this page already exists, you will be sent to the form for editing that page.\nOtherwise, you will be sent to the form for adding the page.",
- "sf_formstart_noform_docu": "Enter the name of a page here, and select the form to edit it with.\nIf this page already exists, you will be sent to the form for editing that page.\nOtherwise, you will be sent to the form for adding the page.",
- "sf_formstart_createoredit": "Create or edit",
- "formedit": "Edit with form",
- "sf_formedit_createtitle": "Create $1: $2",
- "sf_formedit_createtitlenotarget": "Create $1",
- "sf_formedit_badurl": "This is the page for editing with a form. You must specify both a form name and a target page in the URL;\nit should look like \"Special:FormEdit?form=<form name>&target=<target page>\", or \"Special:FormEdit/<form name>/<target page>\".",
- "sf_formedit_altforms": "You can instead add this page with one of the following forms:",
- "sf_formedit_altformsonly": "Please select from one of the following forms to add this page:",
- "sf_formcreate": "Create with form",
- "sf_viewform": "View form",
- "sf_editsource": "Edit source",
- "sf_formedit_edittitle": "Edit $1: $2",
- "sf_formedit_morethanoneform": "'''Warning:''' More than one default form is defined for this page.",
- "sf_formedit_formwarning": "Warning: This page <a href=\"$1\">already exists</a>, but it does not use this form.",
- "sf_formedit_mismatchedbrackets": "Warning: This page contains curly or square brackets that are not closed, so the page will not be handled correctly by the form. Please <a href=\"$1\">fix the error in the source text</a> before proceeding.",
- "sf_formedit_remove": "Remove this instance",
- "sf_formedit_addanotherabove": "Add another instance above this one",
- "sf_formedit_addanother": "Add another",
- "sf_formedit_none": "None",
- "sf_formedit_emptytitle": "Error: The inserted data results in an empty page title.",
- "sf_formedit_hookerror": "Error: A MediaWiki extension prevented the modification of the target page.",
- "sf_formedit_saveandcontinueediting": "Save and continue",
- "sf_formedit_saveandcontinue_summary": "Saved using \"$1\" button in form",
- "sf_formedit_tooltip_saveandcontinueediting": "Save data and continue editing",
- "sf_formedit_accesskey_saveandcontinueediting": "a",
- "sf_autoedit_anoneditwarning": "Warning: You are not logged in. Your IP address will be recorded in this page's edit history.",
- "sf_autoedit_success": "Successfully modified [[$1]] using form $2.",
- "sf_autoedit_fail": "Modifying [[$1]] failed.",
- "sf_autoedit_notargetspecified": "No target page specified.",
- "sf_autoedit_invalidtargetspecified": "The specified target page '''$1''' is invalid.",
- "sf_autoedit_invalidform": "'''$1''' is not a valid form.",
- "sf_autoedit_redirectlimitexeeded": "The maximum redirect limit for form $1 was exceeded.",
- "sf_autoedit_invalidredirecttarget": "$1 is an invalid redirect target for form $2.",
- "sf_autoedit_invalidpreloadspecified": "The specified preload page $1 is invalid.",
- "sf_autoedit_redlinkexists": "$1 already exists.",
- "sf_autoedit_noformfound": "No form specified.",
- "sf_autoedit_toomanyformsfound": "More than one form available for page.",
- "sf_autoedit_readonly": "The database is currently locked to modifications. Reason: $1",
- "sf_autoedit_nosemanticform": "Could not get form $2 for page $1. See [[{{#special:FormEdit}}/$2/$1]] for details.",
- "sf_autoedit_summary": "Edited automatically from page $1.",
- "sf-autoedit-wait": "Wait...",
- "runquery": "Run query",
- "sf_runquery_badurl": "You must specify a form name in the URL;\nthe URL should look like \"Special:RunQuery/<form name>\".",
- "sf_runquery_title": "Run query: $1",
- "sf_runquery_additionalquery": "Additional query",
- "sf_formerrors_header": "There were errors with your form input; see below.",
- "sf_too_few_instances_error": "There must be at least $1 instances of this template.",
- "sf_too_many_instances_error": "There must be no more than $1 instances of this template.",
- "sf_blank_error": "cannot be blank",
- "sf_bad_url_error": "must have the correct URL format, starting with \"http\"",
- "sf_bad_email_error": "must have a valid email address format",
- "sf_bad_number_error": "must be a valid number",
- "sf_bad_date_error": "must be a valid date",
- "uploadwindow": "Upload window",
- "sf_deletionlog": "Deletion log",
- "sf-preview-header": "Form preview",
- "sf-preview-note": "This is what the form will look like when it is in use:",
- "sf-pageschemas-pagenameformula": "Page name formula:",
- "sf-pageschemas-createtitle": "Title of form for new pages:",
- "sf-pageschemas-edittitle": "Title of form for existing pages:",
- "sf-pageschemas-inputtype": "Input type (leave blank to set to default):",
- "sf-pageschemas-otherparams": "Enter parameter names and their values as key=value pairs, separated by commas (if a value contains a comma, replace it with \"\\,\"). For example: $1",
- "sf_property_isproperty": "This is a property of type $1.",
- "sf_property_linkstoform": "It links to pages that use the form $1.",
- "sf_property_allowedvals": "The allowed {{PLURAL:$1|value for this property is|values for this property are}}:",
- "sf_template_docu": "This is the \"$1\" template.\nIt should be called in the following format:",
- "sf_template_docufooter": "Edit the page to see the template text.",
- "sf_form_docu": "This is the \"$1\" form.\nTo create a page with this form, enter the page name below;\nif a page with that name already exists, you will be sent to a form to edit that page.",
- "sf_form_freetextlabel": "Free text",
- "sf_category_hasdefaultform": "This category uses the form $1.",
- "sf_category_desc": "This is the $1 category.",
- "sf_blank_namespace": "Main",
- "right-viewedittab": "View \"{{int:edit}}\" tab for pages editable by form",
- "right-editrestrictedfields": "Edit restricted form fields",
- "right-createclass": "Create new semantic classes",
- "action-createclass": "create new semantic classes",
- "action-editrestrictedfields": "edit restricted form fields",
- "action-viewedittab": "view the \"{{int:edit}}\" tab for pages editable by form",
- "sf-select2-no-matches": "No matches",
- "sf-select2-searching": "Searching...",
- "sf-select2-input-too-short": "Please enter $1 or more characters.",
- "sf-select2-selection-too-big": "This field cannot hold more than {{PLURAL:$1|$1 value|$1 values}}."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/eo.json b/SemanticForms/i18n/eo.json
deleted file mode 100644
index 433a6ca6..00000000
--- a/SemanticForms/i18n/eo.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Michawiki",
- "Yekrats"
- ]
- },
- "semanticforms-desc": "Formularoj por aldonado kaj redaktado de semantikaj datumoj",
- "specialpages-group-sf_group": "Semantikaj Kamparoj",
- "createproperty": "Kreu atributon",
- "sf_createproperty_propname": "Nomo de la atributo:",
- "sf_createproperty_proptype": "Speco:",
- "templates": "Ŝablonoj",
- "sf_templates_docu": "La jenaj ŝablonoj ekzistas en la vikio.",
- "sf_templates_definescat": "priskribas kategorion: $1",
- "createtemplate": "Kreu ŝablono",
- "sf_createtemplate_namelabel": "Nomo de ŝablono:",
- "sf_createtemplate_categorylabel": "Kategorio difinita de ŝablono (nedevige):",
- "sf_createtemplate_templatefields": "Kampoj de ŝablono",
- "sf_createtemplate_fieldname": "Nomo de kampo:",
- "sf_createtemplate_displaylabel": "Montri etikedon:",
- "sf_createtemplate_semanticproperty": "Semantika atributo:",
- "sf_createtemplate_fieldislist": "Ĉi kampo povas enhavi liston da valoroj, apartigitaj de komoj",
- "sf_createtemplate_aggregation": "Agregaĵo",
- "sf_createtemplate_aggregationlabel": "Titolo por listo:",
- "sf_createtemplate_outputformat": "Eliga formato:",
- "sf_createtemplate_standardformat": "Norma",
- "sf_createtemplate_infoboxformat": "Dekstra informokesto",
- "sf_createtemplate_addfield": "Aldonu kampon",
- "sf_createtemplate_deletefield": "Forigi",
- "forms": "Kamparoj",
- "sf_forms_docu": "La jenaj kampoj ekzistas en la vikio.",
- "sf_forminputs_mandatory": "Deviga",
- "sf_forminputs_restricted": "Limigita (nur administrantaj uzantoj povas ŝanĝi ĝin)",
- "createform": "Kreu kamparon",
- "sf_createform_nameinput": "Nomo de la formularo",
- "sf_createform_template": "Ŝablono:",
- "sf_createform_templatelabelinput": "Etikedo de ŝablono (nedevige):",
- "sf_createform_allowmultiple": "Akomodi multajn (aŭ nul) ekzemplerojn de ĉi ŝablono en la kreita paĝo",
- "sf_createform_field": "Kampo:",
- "sf_createform_fieldprop": "Ĉi tiu kampo difinas la atributon $1, de speco $2.",
- "sf_createform_fieldproplist": "Ĉi tiu kampo difinas liston de elementoj kiu havas la atributon $1, de tipo $2.",
- "sf_createform_fieldpropunknowntype": "Ĉi tiu kampo difinas la atributon $1, de nespecifa tipo.",
- "sf_createform_inputtype": "Eniga speco:",
- "sf_createform_inputtypedefault": "(defaŭlto)",
- "sf_createform_formlabel": "Etikedo de kamparo:",
- "sf_createform_hidden": "Kaŝita",
- "sf_createform_removetemplate": "Forigu ŝablonon",
- "sf_createform_addtemplate": "Aldonu ŝablonon:",
- "sf_createform_atend": "Ĉe fino",
- "sf_createform_add": "Aldoni",
- "sf_createform_choosefield": "Elektu kampon por aldoni",
- "sf_createform_before": "Antaŭ ŝablono:",
- "sf_createform_additembeforesave": "Vi devas aldoni almenaŭ unu ŝablonon al ĉi kamparo antaŭ vi povas konservi ĝin.",
- "createcategory": "Kreu kategorion",
- "sf_createcategory_name": "Kategoria nomo:",
- "sf_createcategory_defaultform": "Defaŭlta kamparo:",
- "sf_createcategory_makesubcategory": "Faru ĉi tiun kiel kategorion de alia kategorio (nedevige):",
- "createclass": "Krei klason",
- "sf_createclass_allowedvalues": "Permesitaj valoroj",
- "sf_createclass_listofvalues": "Listo de valoroj",
- "formstart": "Aldoni paĝon kun kamparo",
- "sf_formstart_badform": "Eraro: neniu kampara paĝo estis trovita ĉe $1",
- "sf_formstart_createoredit": "Krei aŭ redakti",
- "formedit": "Redaktu kun kamparo",
- "sf_formedit_createtitle": "Krei $1: $2",
- "sf_formedit_altformsonly": "Bonvolu elekti unu el la jenaj kamparoj aldoni ĉi paĝon:",
- "sf_formcreate": "Krei per formularo",
- "sf_viewform": "Rigardi kamparon",
- "sf_editsource": "Redaktu fonton",
- "sf_formedit_edittitle": "Redaktu $1: $2",
- "sf_formedit_formwarning": "Averto: Ĉi paĝo <a href=\"$1\">jam ekzistas</a>, sed ĝi ne uzas ĉi kamparon.",
- "sf_formedit_remove": "Forigi",
- "sf_formedit_addanother": "Aldonu plu",
- "sf_formedit_none": "Neniu",
- "sf_runquery_additionalquery": "Aldona serĉomendo",
- "sf_formerrors_header": "Estis eraroj kun via kampara enigo, jene:",
- "sf_blank_error": "ne povas esti malplena",
- "sf_bad_url_error": "nepre havas la korektan URL-formaton, komence kun 'http'",
- "sf_bad_email_error": "devas havi validan formaton de retpoŝta adreso",
- "sf_bad_number_error": "devas esti valida nombro",
- "sf_bad_date_error": "devas esti valida dato",
- "uploadwindow": "Alŝuta fenestro",
- "sf_deletionlog": "Protokolo pri forigado",
- "sf_property_isproperty": "Ĉi tiu estas atributo de speco $1.",
- "sf_property_allowedvals": "La {{PLURAL:$1|permesita valoro por ĉi tiu atributo|permesitaj valoroj por ĉi tiuj atributoj}} estas:",
- "sf_template_docu": "Ĉi tiu estas la '$1' ŝablono. Ĝi estu vokita en la jena formato:",
- "sf_template_docufooter": "Redaktu la paĝo por vidi la ŝablonan tekston.",
- "sf_form_freetextlabel": "Libera teksto",
- "sf_category_hasdefaultform": "Ĉi kategorio uzas la kamparon $1.",
- "sf_category_desc": "Ĉi tiu estas la $1 kategorio.",
- "sf_blank_namespace": "Ĉefa"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/es.json b/SemanticForms/i18n/es.json
deleted file mode 100644
index 42b19af4..00000000
--- a/SemanticForms/i18n/es.json
+++ /dev/null
@@ -1,197 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Armando-Martin",
- "Cmitnick",
- "Crazymadlover",
- "Dvdgmz",
- "Fitoschido",
- "Jatrobat",
- "Jewbask",
- "Maor X",
- "Pertile",
- "Peter17",
- "Sanbec",
- "Vivaelcelta"
- ]
- },
- "semanticforms-desc": "Formularios para añadir y editar datos semánticos",
- "specialpages-group-sf_group": "Formularios semánticos",
- "createproperty": "Crear una propiedad",
- "sf-createproperty-with-name": "Crear la propiedad: $1",
- "sf_createproperty_linktoform": "Esta propiedad vinculará a páginas que usen el formulario:",
- "sf_createproperty_allowedvalsinput": "Si usted desea que esta propiedad solo permita tener ciertos valores, ingrese la lista de valores permitidos, separados por comas (si un valor contiene una coma, reemplazelo con \"\\,\"):",
- "sf_createproperty_propname": "Nombre de propiedad:",
- "sf_createproperty_proptype": "Tipo:",
- "templates": "Plantillas",
- "sf_templates_docu": "Las siguientes plantillas existen en el wiki.",
- "sf_templates_definescat": "Definir categoría: $1",
- "createtemplate": "Crear una plantilla",
- "sf-createtemplate-with-name": "Crear plantilla:$1",
- "sf_createtemplate_namelabel": "Nombre de la Plantilla:",
- "sf_createtemplate_multipleinstance": "Esta plantilla puede incluirse varias veces en la página.",
- "sf_createtemplate_connectingproperty": "Nombre de la propiedad para conectar los campos de esta plantilla con el resto de la página:",
- "sf_createtemplate_categorylabel": "Categoría definida por la plantilla (opcional):",
- "sf_createtemplate_templatefields": "Campos de la Plantilla",
- "sf_createtemplate_fieldsdesc": "Para obtener los campos en esta plantilla ya no hace falta especificar los nombres de los campos, simplemente ingresa el índice de cada campo (por ejemplo 1, 2, 3, etc.) para referirte a él, en vez de su nombre real.",
- "sf_createtemplate_fieldname": "Nombre del Campo:",
- "sf_createtemplate_displaylabel": "Mostrar etiqueta:",
- "sf_createtemplate_semanticproperty": "Propiedad semántica:",
- "sf_createtemplate_fieldislist": "Este campo puede soportar una lista de valores, separados por comas",
- "sf_createtemplate_aggregation": "Agregación",
- "sf_createtemplate_aggregationdesc": "Para listar, en cualquier página usando esta plantilla, todas la páginas que tengan una cierta propiedad que apunte a esa página, especifica la propiedad adecuada a continuación:",
- "sf_createtemplate_aggregationlabel": "Título para la lista:",
- "sf_createtemplate_outputformat": "Formato de salida:",
- "sf_createtemplate_standardformat": "Tabla",
- "sf_createtemplate_infoboxformat": "Caja de información lateral",
- "sf_createtemplate_plainformat": "Texto sin formato",
- "sf_createtemplate_sectionsformat": "Secciones",
- "sf_createtemplate_addfield": "Agregar campo",
- "sf_createtemplate_deletefield": "Borrar",
- "forms": "Formularios",
- "sf_forms_docu": "Los siguientes formularios existen en el wiki.",
- "sf_forminputs_mandatory": "Obligado",
- "sf_forminputs_restricted": "Sólo los administradores pueden editar esta entrada",
- "sf_forminputs_class": "El atributo \"class\" de HTML para esta entrada",
- "sf_forminputs_default": "El valor por defecto para esta entrada",
- "sf_forminputs_preload": "Una página wiki cuyos contenidos serán el valor por defecto de esta entrada",
- "sf_forminputs_property": "Una propiedad semántica a la que este campo hace referencia",
- "sf_forminputs_size": "El tamaño de este campo de texto, en caracteres",
- "sf_forminputs_maxlength": "La longitud de texto máxima permitida en este campo",
- "sf_forminputs_placeholder": "Texto de axuda que aparece en la entrada hasta que el usuario haga clic sobre él",
- "sf_forminputs_uploadable": "Coloque un enlace \"Cargar archivo\" junto a esta entrada",
- "sf_forminputs_defaultfilename": "El nombre de archivo por defecto para los archivos cargados",
- "sf_forminputs_rows": "El número de líneas para esta entrada",
- "sf_forminputs_cols": "El número de columnas para esta entrada",
- "sf_forminputs_autogrow": "Configure esta entrada para que aumente de tamaño si el texto supera sus límites",
- "sf_forminputs_valuesfromproperty": "Una propiedad cuyos valores en el wiki deben ser el conjunto de valores de esta entrada",
- "sf_forminputs_valuesfromcategory": "Una categoría cuyas páginas deben ser el conjunto de valores de esta entrada",
- "sf_forminputs_valuesfromnamespace": "Un espacio de nombres cuyas páginas deben ser el conjunto de valores de esta entrada",
- "sf_forminputs_valuesfromconcept": "Una página \"concept\" de Semantic MediaWiki cuyas páginas deben ser el conjunto de valores de esta entrada",
- "sf_forminputs_valuesfromurl": "Una dirección URL que contiene datos estructurados que deben ser el conjunto de valores de esta entrada",
- "sf_forminputs_values": "El conjunto de valores para esta entrada, separados por comas",
- "sf_forminputs_list": "Marcar esta entrada indicando que tiene una lista de valores",
- "sf_forminputs_delimiter": "El delimitador entre los valores del campo, si esta entrada tiene una lista de ellos",
- "sf_forminputs_remoteautocompletion": "Usar el completado automático remoto",
- "sf_forminputs_existingvaluesonly": "Permitir solamente los valores que ya están en la lista",
- "sf_forminputs_showonselect": "Elementos de la página a mostrar si sólo se seleccionan algunos valores determinados (por ejemplo: \"valor1=>div1; valor2=>div2\")",
- "sf_forminputs_listboxsize": "La altura de esta caja de listas, en número de líneas",
- "sf_forminputs_includetimezone": "Incluir una entrada para la zona horaria",
- "sf_forminputs_topcategory": "La categoría madre de este conjunto de categorías (obligatorio)",
- "sf_forminputs_hideroot": "Ocultar la categoría madre",
- "sf_forminputs_depth": "El número de niveles de categorías a mostrar inicialmente",
- "sf_forminputs_height": "La altura de esta entrada, en píxeles",
- "sf_forminputs_width": "La anchura de esta entrada, en píxeles",
- "createform": "Crear un formulario",
- "sf-createform-with-name": "Crear formulario: $1",
- "sf_createform_nameinput": "Nombre del Formulario",
- "sf_createform_nameinputdesc": "(normalmente, el formulario recibe el mismo nombre que su plantilla principal):",
- "sf_createform_template": "Plantilla:",
- "sf_createform_templatelabelinput": "Etiqueta de la plantilla (opcional):",
- "sf_createform_allowmultiple": "Permitir múltiples (o ninguna) instancias de esta plantilla en la página creada",
- "sf_createform_field": "Campo:",
- "sf_createform_fieldprop": "Este campo define la propiedad $1, de tipo $2.",
- "sf_createform_fieldproplist": "Este campo define una lista de elementos que tienen la propiedad $1, de tipo $2.",
- "sf_createform_fieldpropunknowntype": "Este campo define la propiedad $1, de tipo no especificado.",
- "sf_createform_inputtype": "Tipo de entrada:",
- "sf_createform_inputtypedefault": "(predeterminado)",
- "sf_createform_formlabel": "Etiqueta del Formulario:",
- "sf_createform_hidden": "Oculto",
- "sf_createform_removetemplate": "Sacar plantilla",
- "sf_createform_addtemplate": "Agregar plantilla:",
- "sf_createform_atend": "Al final",
- "sf_createform_add": "Agregar",
- "sf_createform_choosefield": "Escoger un campo para agregar",
- "sf_createform_before": "Plantilla anterior:",
- "sf_createform_additembeforesave": "Debe agregar al menos una plantilla a este formulario antes de guardarlo.",
- "createcategory": "Crear una categoría",
- "sf-createcategory-with-name": "Crear la categoría:$1",
- "sf_createcategory_name": "Nombre de categoría:",
- "sf_createcategory_defaultform": "Formulario predeterminado:",
- "sf_createcategory_makesubcategory": "Hacer esto una subcategoría de otra categoría (opcional):",
- "createclass": "Crear una clase",
- "sf_createclass_docu": "Ingresar todos los datos aquí para crear las propiedades, plantilla, formulario y categoría para una sóla clase. Para más opciones, usar las páginas $1 en su lugar.",
- "sf_createclass_allowedvalues": "Valores permitidos:",
- "sf_createclass_listofvalues": "¿Lista de valores?",
- "sf_createclass_nameinput": "Nombre del formulario:",
- "sf_createclass_missingvalues": "No todos los campos requeridos fueron llenados.",
- "sf_createclass_success": "Propiedades, plantilla, formulario y categoría serán creadas.",
- "sf_createclass_create": "Crear",
- "formstart": "Agregar página con formulario",
- "sf_formstart_badform": "Error: no se encontró la página del formulario en $1",
- "sf_formstart_badtitle": "Error: \"$1\" es un título inválido para una página.",
- "sf_formstart_docu": "Ingresar el nombre de la página aqui, para ser editado con el formulario '$1'. Si esta página ya existe, usted será enviado al formulario para editar esa página. De otra forma, usted será enviado al formulario para agregar la página.",
- "sf_formstart_noform_docu": "Ingresar el nombre de la página aqui, y seleccionar el formulario con el cual se editará. Si esta página ya existe, usted será enviado al formulario para editar esa página. De otra forma, usted será enviado al formulario para agregar la página.",
- "sf_formstart_createoredit": "Crear o editar",
- "formedit": "Editar con formulario",
- "sf_formedit_createtitle": "Crear $1: $2",
- "sf_formedit_createtitlenotarget": "Crear $1",
- "sf_formedit_badurl": "Esta es la página para la edición con un formulario. Debe especificar tanto el nombre del formulario como la página de destino en la URL; el resultado se debería ver 'Especial:EditarFormulario?form=<nombre del formulario>&target=<página destino>' o 'Epecial:EditarFormulario/<nombre del formulario>/<página destino>'.",
- "sf_formedit_altforms": "Usted puede también agregar esta página con uno de los siguientes formularios:",
- "sf_formedit_altformsonly": "Porfavor seleccionar de uno de los siguientes formularios para agregar esta página:",
- "sf_formcreate": "Crear con formulario",
- "sf_viewform": "Ver formulario",
- "sf_editsource": "Editar código",
- "sf_formedit_edittitle": "Editar $1: $2",
- "sf_formedit_morethanoneform": "Advertencia: Más de un formulario por defecto está definido para esta página.",
- "sf_formedit_formwarning": "Advertencia: Esta página <a href=\"$1\">ya existe</a>, pero no usa este formulario.",
- "sf_formedit_mismatchedbrackets": "Aviso: Esta página contiene paréntesis, corchetes o llaves sin cerrar, de modo que el formulario no manejará la página correctamente. <a href=\"$1\">Corrija el error en el texto fuente</a> antes de continuar.",
- "sf_formedit_remove": "Sacar",
- "sf_formedit_addanother": "Agregar otro",
- "sf_formedit_none": "Ninguno",
- "sf_formedit_emptytitle": "Error: Los datos insertados dieron como resultado un título de página en blanco.",
- "sf_formedit_hookerror": "Error: Una extensión de MediaWiki impidió la modificación de la página de destino.",
- "sf_formedit_saveandcontinueediting": "Guardar y continuar",
- "sf_formedit_saveandcontinue_summary": "Guardado mediante el botón \"$1\" del formulario",
- "sf_formedit_tooltip_saveandcontinueediting": "Guardar datos y continuar editando",
- "sf_autoedit_anoneditwarning": "Aviso: No has iniciado sesión. Tu dirección IP quedará registrada en el historial de revisiones de esta página.",
- "sf_autoedit_success": "Se modificó correctamente [[$1]] empleando el formulario $2.",
- "sf_autoedit_fail": "Error al modificar [[$1]].",
- "sf_autoedit_notargetspecified": "No se especificó ninguna página de destino.",
- "sf_autoedit_invalidtargetspecified": "La página de destino especificada, $1, no es válida.",
- "sf_autoedit_invalidform": "$1 no es un formulario válido.",
- "sf_autoedit_redirectlimitexeeded": "Sue ha superado el límite máximo de redirecciones para el formulario $1.",
- "sf_autoedit_invalidredirecttarget": "$1 no es un objetivo válido de redirección el formulario $2.",
- "sf_autoedit_invalidpreloadspecified": "La página de precarga especificada, $1, no es válida.",
- "sf_autoedit_redlinkexists": "$1 ya existe.",
- "sf_autoedit_noformfound": "No se especificó ningún formulario.",
- "sf_autoedit_toomanyformsfound": "Hay más de un formulario disponible para la página.",
- "sf_autoedit_readonly": "La base de datos está actualmente bloqueada para modificaciones. Motivo: $1",
- "sf_autoedit_nosemanticform": "No se pudo obtener el formulario $2 para la página $1. Véase [[{{#special:FormEdit}}/$2/$1]] para más detalles.",
- "sf_autoedit_summary": "Editado automáticamente a partir de la página $1.",
- "sf-autoedit-wait": "Espera...",
- "runquery": "Ejecutar consulta",
- "sf_runquery_badurl": "Debes especificar un nombre de formulario en el URL;\nel URL debería lucir como 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Ejecutar consulta: $1",
- "sf_runquery_additionalquery": "Consulta adicional",
- "sf_formerrors_header": "Hubo errores en los datos del formulario; vea más abajo",
- "sf_blank_error": "no puede estar en blanco",
- "sf_bad_url_error": "debe tener el formato correcto de URL, comenzando con 'http'",
- "sf_bad_email_error": "debe tener una dirección de correo electrónico con un formato válido",
- "sf_bad_number_error": "debe ser un número válido",
- "sf_bad_date_error": "debe ser una fecha válida",
- "uploadwindow": "Ventana para subir archivos",
- "sf_deletionlog": "Registro de borrado",
- "sf-preview-header": "Vista previa del formulario",
- "sf-preview-note": "Este será el aspecto del formulario cuando esté en uso:",
- "sf-pageschemas-pagenameformula": "Fórmula del nombre de página:",
- "sf-pageschemas-createtitle": "Título del formulario para las páginas nuevas:",
- "sf-pageschemas-edittitle": "Título del formulario para las páginas existentes:",
- "sf-pageschemas-inputtype": "Tipo de entrada (déjelo en blanco para el valor predeterminado):",
- "sf_property_isproperty": "Esta es una propiedad de tipo $1.",
- "sf_property_linkstoform": "Vincula a páginas que usen el formulario $1.",
- "sf_property_allowedvals": "Los {{PLURAL:$1|valor permitido para esta propiedad es|valores permitidos para esta propiedad son}}:",
- "sf_template_docu": "Este es la plantilla '$1'. Debe ser llamada en el siguiente formato:",
- "sf_template_docufooter": "Editar la página para ver el texto de la plantilla.",
- "sf_form_docu": "Este es el formulario ''$1''.\nPara crear una página con este formulario, ingrese el nombre de la página a continuación; si la página con ese nombre ya existe, será dirigido al formulario para editar esa página.",
- "sf_form_freetextlabel": "Texto libre",
- "sf_category_hasdefaultform": "Esta categoría usa el formulario $1.",
- "sf_category_desc": "Esta es la categoría $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Ver pestaña \"Editar\" para páginas editables por formulario",
- "right-editrestrictedfields": "Editar campos de formulario restringidos",
- "right-createclass": "Crear nuevas clases semánticas",
- "action-createclass": "crear nuevas clases semánticas",
- "action-editrestrictedfields": "editar los campos restringidos de los formularios",
- "action-viewedittab": "ver la pestaña \"Editar\" en las páginas editables por formularios"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/et.json b/SemanticForms/i18n/et.json
deleted file mode 100644
index 1effce3c..00000000
--- a/SemanticForms/i18n/et.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Avjoska",
- "Pikne"
- ]
- },
- "sf_createproperty_proptype": "Tüüp:",
- "templates": "Mallid",
- "createtemplate": "Malli loomine",
- "sf-createtemplate-with-name": "Loo mall: $1",
- "sf_createtemplate_namelabel": "Malli nimi:",
- "sf_createtemplate_templatefields": "Malli väljad",
- "sf_createtemplate_fieldname": "Välja nimi:",
- "sf_createtemplate_standardformat": "Tabel",
- "sf_createtemplate_plainformat": "Lihttekst",
- "sf_createtemplate_addfield": "Lisa väli",
- "sf_createtemplate_deletefield": "Kustuta",
- "forms": "Vormid",
- "sf_forms_docu": "Vikis on olemas järgmised vormid.",
- "createform": "Vormi loomine",
- "sf_createform_nameinput": "Vormi nimi",
- "sf_createform_template": "Mall:",
- "sf_createform_field": "Väli:",
- "sf_createform_hidden": "Peidetud",
- "sf_createform_removetemplate": "Eemalda mall",
- "sf_createform_addtemplate": "Lisa mall:",
- "sf_createform_atend": "Lõpus",
- "sf_createform_add": "Lisa",
- "sf_createform_choosefield": "Lisamiseks vali väli",
- "sf_createform_before": "Enne malli:",
- "createcategory": "Kategooria loomine",
- "sf-createcategory-with-name": "Loo kategooria: $1",
- "sf_createcategory_name": "Kategooria nimi:",
- "sf_createcategory_defaultform": "Vaikevorm:",
- "sf_createclass_allowedvalues": "Lubatud väärtused:",
- "sf_createclass_listofvalues": "Väärtuste loend?",
- "sf_createclass_nameinput": "Vormi nimi:",
- "sf_formstart_badform": "Tõrge: Leheküljelt \"$1\" ei leitud ühtegi vormi.",
- "sf_formstart_badtitle": "Tõrge: \"$1\" on vigane lehekülje pealkiri.",
- "sf_formstart_createoredit": "Loo või redigeeri",
- "sf_formedit_remove": "Eemalda see eksemplar",
- "sf_formedit_addanotherabove": "Lisa selle eksemplari kohale veel üks",
- "sf_formedit_addanother": "Lisa teine",
- "sf_formedit_saveandcontinueediting": "Salvesta ja jätka",
- "sf_autoedit_invalidform": "$1 pole sobiv vorm.",
- "sf_autoedit_redlinkexists": "$1 on juba olemas.",
- "sf-autoedit-wait": "Oota...",
- "runquery": "Päringu käivitamine",
- "sf_runquery_additionalquery": "Lisapäring",
- "sf_blank_error": "ei tohi olla tühi",
- "sf_bad_email_error": "peab olema sobiv e-aadressi vorming",
- "sf_bad_number_error": "peab olema sobiv number",
- "sf_bad_date_error": "peab olema kehtiv kuupäev",
- "sf_deletionlog": "Kustutamislogi",
- "sf-preview-header": "Vormi eelvaade",
- "sf_form_freetextlabel": "Vaba tekst",
- "sf_category_desc": "See on $1 kategooria.",
- "sf_blank_namespace": "Põhinimeruum"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/eu.json b/SemanticForms/i18n/eu.json
deleted file mode 100644
index 81ba4e21..00000000
--- a/SemanticForms/i18n/eu.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "An13sa",
- "Kobazulo",
- "Xabier Armendaritz"
- ]
- },
- "createproperty": "Propietatea sortu",
- "sf_createproperty_propname": "Ezaugarriaren izena:",
- "sf_createproperty_proptype": "Mota:",
- "templates": "Txantiloiak",
- "createtemplate": "Txantiloia sortu",
- "sf_createtemplate_namelabel": "Txantiloiaren izena:",
- "sf_createtemplate_displaylabel": "Etiketa erakutsi:",
- "sf_createtemplate_deletefield": "Ezabatu",
- "sf_createform_template": "Txantiloia:",
- "sf_createform_removetemplate": "Txantiloia kendu",
- "sf_createform_addtemplate": "Txantiloia gehitu:",
- "sf_createform_add": "Gehitu",
- "createcategory": "Kategoria sortu",
- "sf_createcategory_name": "Kategoriaren izena:",
- "sf_formstart_createoredit": "Sortu edo aldatu",
- "sf_formedit_createtitle": "$1 aldatu: $2",
- "sf_editsource": "Aldatu iturburu kodea",
- "sf_formedit_edittitle": "$1 aldatu: $2",
- "sf_formedit_remove": "Kendu",
- "sf_formedit_addanother": "Beste bat gehitu",
- "sf_deletionlog": "Ezabaketa erregistroa",
- "sf_form_freetextlabel": "Testu askea",
- "sf_blank_namespace": "Nagusia"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/fa.json b/SemanticForms/i18n/fa.json
deleted file mode 100644
index 89be211e..00000000
--- a/SemanticForms/i18n/fa.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ebraminio",
- "Huji",
- "Mjbmr",
- "Momeni",
- "Omidh",
- "Tofighi"
- ]
- },
- "semanticforms-desc": "فرم‌هایی برای افزودن و ویرایش اطلاعات معنایی",
- "specialpages-group-sf_group": "فرم‌های معنایی",
- "createproperty": "ویژگی بسازید",
- "sf_createproperty_allowedvalsinput": "اگر می‌خواهید این ورودی تنها مقادیر مشخصی داشته باشد،سیاهه مقادیر را وارد کنید و آنها را با کاما جدا سازید (اگر در این مقادیر از کاما استفاده می‌کنید، آن‌را با \"\\،\" جایگزین نمایید):",
- "sf_createproperty_propname": "نام:",
- "sf_createproperty_proptype": "نوع:",
- "templates": "الگوها",
- "sf_templates_docu": "الگوهای زیر در این ویکی وجود دارند.",
- "sf_templates_definescat": "تعیین رده: $1",
- "createtemplate": "الگو بسازید",
- "sf_createtemplate_namelabel": "نام الگو:",
- "sf_createtemplate_categorylabel": "تعیین رده به‌وسیله الگو (دلخواه):",
- "sf_createtemplate_templatefields": "ورودی‌های الگو",
- "sf_createtemplate_fieldsdesc": "برای داشتن ورودی‌های بدون نام در الگوها،کافیست شماره ورودی را به جای نام واقعی ورودی وارد کنید (مثلا ۳،۲،۱ و ...).",
- "sf_createtemplate_fieldname": "نام ورودی:",
- "sf_createtemplate_displaylabel": "نمایش برچسب:",
- "sf_createtemplate_semanticproperty": "ویژگی معنایی:",
- "sf_createtemplate_fieldislist": "این ورودی می‌تواند یک سیاهه از مقادیر را که با کاما از هم جدا شده‌اند، در خود ذخیره کند",
- "sf_createtemplate_aggregation": "تراکم",
- "sf_createtemplate_aggregationdesc": "برای داشتن سیاهه همه صفحاتی که این الگو را به‌کار می‌برند، و همه آن مقالاتی که با ویژگی معینی با آن صفحه در ارتباط هستند، وِیژگی مناسب را مشخص کنید:",
- "sf_createtemplate_aggregationlabel": "عنوان سیاهه",
- "sf_createtemplate_outputformat": "قالب خروجی:",
- "sf_createtemplate_standardformat": "استاندارد",
- "sf_createtemplate_infoboxformat": "جعبه اطلاعات سمت چپ",
- "sf_createtemplate_plainformat": "متن ساده",
- "sf_createtemplate_sectionsformat": "بخش‌ها",
- "sf_createtemplate_addfield": "افزودن ورودی",
- "sf_createtemplate_deletefield": "حذف",
- "forms": "فرم‌ها",
- "sf_forms_docu": "فرم‌های زیر در این ویکی وجود دارند.",
- "sf_forminputs_mandatory": "الزامی",
- "sf_forminputs_restricted": "فقط مدیران می‌توانند این ورودی را ویرایش کنند",
- "createform": "فرم بسازید",
- "sf_createform_nameinput": "نام فرم (بهتر است که بعد از پر شدن به‌وسیله یک الگو، فرم نام‌گذاری شود):",
- "sf_createform_template": "الگو:",
- "sf_createform_templatelabelinput": "برچسب الگو (دلخواه):",
- "sf_createform_allowmultiple": "می‌توان چند (یا صفر) نمونه از این الگو را در ساختن صفحه‌ها استفاده کرد",
- "sf_createform_field": "ورودی:",
- "sf_createform_fieldprop": "این ورودی ویژگی $1 از نوع $2 را تعیین می‌کند.",
- "sf_createform_fieldproplist": "این ورودی یک سیاهه از مواردی که ویژگی $1 از نوع $2 را دارند، تعیین می‌کند.",
- "sf_createform_fieldpropunknowntype": "این ورودی ویژگی $1 از نوع نامشخص را تعیین می‌کند.",
- "sf_createform_inputtype": "نوع ورودی:",
- "sf_createform_inputtypedefault": "(پیش‌فرض)",
- "sf_createform_formlabel": "برچسب فرم:",
- "sf_createform_hidden": "مخفی",
- "sf_createform_removetemplate": "حذف الگو",
- "sf_createform_addtemplate": "افزودن الگو:",
- "sf_createform_atend": "در آخر",
- "sf_createform_add": "افزودن",
- "sf_createform_choosefield": "یک ورودی برای افزودن انتخاب کنید",
- "sf_createform_before": "قبل از الگوی:",
- "sf_createform_additembeforesave": "قبل از اینکه بتوانید فرم را ذخیره کنید، شما می‌بایست حداقل یک الگو به این فرم اضافه نمایید.",
- "createcategory": "رده بسازید",
- "sf_createcategory_name": "نام:",
- "sf_createcategory_defaultform": "فرم پیش‌فرض:",
- "sf_createcategory_makesubcategory": "قرار دادن این رده به عنوان زیررده یک رده دیگر(دلخواه):",
- "sf_createclass_create": "ایجاد",
- "formstart": "افزودن صفحه",
- "sf_formstart_badform": "خطا: هیچ صفحه فرمی در $1 پیدا نشد",
- "sf_formstart_docu": "برای ویرایش با فرم '$1'، نام صفحه را اینجا وارد کنید. اگر صفحه در حال حاضر موجود باشد، شما به فرم ویرایش صفحه هدایت می‌شوید. در غیر این‌صورت به فرم افزودن صفحه منتقل خواهید شد.",
- "sf_formstart_noform_docu": "نام صفحه را اینجا وارد کنید و فرمی را که می‌خواهید ویرایش با آن انجام شود انتخاب نمایید. اگر صفحه در حال حاضر موجود باشد، شما به صفحه ویرایش آن صفحه به‌وسیله فرم هدایت می‌شوید. در غیر این‌صورت به فرم افزودن صفحه منتقل خواهید شد.",
- "sf_formstart_createoredit": "افزودن یا ویرایش",
- "formedit": "ویرایش با فرم",
- "sf_formedit_createtitle": "افزودن $1: $2",
- "sf_formedit_badurl": "این صفحه برای افزودن اطلاعات است. شما باید هم نام فرم هم صفحه مقصد را در URL وارد کنید. چیزی شبیه به این <br /><span dir=\"ltr\"> 'ویژه:FormEdit?form=<نام فرم>&target=<صفحه مقصد>' </span><br />یا<br /><span dir=\"ltr\"> 'ویژه:FormEdit/<نام فرم>/<صفحه مقصد>' </span>.",
- "sf_formedit_altforms": "می‌توانید این صفحه را به‌وسیله فرم‌های زیر نیز بسازید:",
- "sf_formedit_altformsonly": "لطفا برای افزودن صفحه از یکی از فرم‌های زیر استفاده کنید:",
- "sf_viewform": "نمایش فرم",
- "sf_editsource": "ویرایش مبدأ",
- "sf_formedit_edittitle": "ویرایش $1: $2",
- "sf_formedit_formwarning": "اخطار: این صفحه <a href=\"$1\">هم‌اکنون وجود دارد</a>، ولی به‌وسیله این فرم ساخته نشده‌است.",
- "sf_formedit_remove": "حذف",
- "sf_formedit_addanother": "افزدون دیگری",
- "sf_formedit_none": "هیچکدام",
- "sf-autoedit-wait": "صبر کنید...",
- "runquery": "اجرای پرس و جو",
- "sf_runquery_additionalquery": "پرس و جوی اضافی",
- "sf_formerrors_header": "خطاهایی در ورودی فرمتان وجود دارد؛ قسمت پایین را ببینید",
- "sf_blank_error": "نمی‌تواند خالی باشد",
- "sf_bad_url_error": "باید قالب URL درستی داشته باشد و با 'http' شروع شود",
- "sf_bad_email_error": "باید قالب صحیحی برای رایانامه داشته باشد",
- "sf_bad_number_error": "باید یک عدد معتبر باشد",
- "sf_bad_date_error": "باید یک تاریخ معتبر باشد",
- "uploadwindow": "پنجره بارگذاری",
- "sf_deletionlog": "سیاههٔ حذف",
- "sf_property_isproperty": "این یک ویژگی از نوع $1 است.",
- "sf_property_allowedvals": "مقادیر مجاز برای این ویژگی یا صفت این‌ها هستند:",
- "sf_template_docu": "این الگوی '$1' است. باید با این قالب فراخوانی شود:",
- "sf_template_docufooter": "برای مشاهده متن الگو صفحه را ویرایش کنید.",
- "sf_form_docu": "این فرم '$1' است. برای افزودن یک صفحه به‌وسیله این فرم،نام صفحه را وارد کنید، اگر صفحه‌ای با این نام وجود داشته باشد، به فرم ویرایش صفحه هدایت می‌شوید.",
- "sf_form_freetextlabel": "متن دلخواه",
- "sf_category_hasdefaultform": "این رده از فرم $1 استفاده می‌کند.",
- "sf_category_desc": "این رده $1 است.",
- "sf_blank_namespace": "اصلی"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/fi.json b/SemanticForms/i18n/fi.json
deleted file mode 100644
index 7cebe933..00000000
--- a/SemanticForms/i18n/fi.json
+++ /dev/null
@@ -1,196 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Beluga",
- "Centerlink",
- "Cimon Avaro",
- "Crt",
- "Mobe",
- "Nedergard",
- "Nike",
- "Silvonen",
- "Str4nd",
- "Stryn",
- "ZeiP"
- ]
- },
- "semanticforms-desc": "Semanttisen tiedon syöttö- ja muokkauslomakkeet",
- "specialpages-group-sf_group": "Semanttiset lomakkeet",
- "createproperty": "Luo ominaisuus",
- "sf-createproperty-with-name": "Luo ominaisuus: $1",
- "sf_createproperty_linktoform": "Tämä ominaisuus linkittää sivuille, jotka käyttävät lomaketta:",
- "sf_createproperty_allowedvalsinput": "Jos ominaisuudella saa olla vain tiettyjä arvoja, lisää pilkuin erotettu lista sallituista arvoista (jos arvo sisältää pilkun, korvaa pilkku kenoviivalla ja pilkulla: ”\\,”):",
- "sf_createproperty_propname": "Ominaisuuden nimi",
- "sf_createproperty_proptype": "Tyyppi",
- "templates": "Mallineet",
- "sf_templates_docu": "Tässä wikissä on seuraavat mallineet:",
- "sf_templates_definescat": "määrittelee luokan $1",
- "createtemplate": "Luo malline",
- "sf-createtemplate-with-name": "Luo malline: $1",
- "sf_createtemplate_namelabel": "Mallineen nimi",
- "sf_createtemplate_multipleinstance": "Tämä malline voi olla monta kertaa samalla sivulla.",
- "sf_createtemplate_connectingproperty": "Ominaisuuden nimi, jotta tämän mallineen kentät voidaan yhdistää sivun muuhun sisältöön:",
- "sf_createtemplate_categorylabel": "Mallineen määrittelemä luokka (valinnainen)",
- "sf_createtemplate_templatefields": "Mallineen kentät",
- "sf_createtemplate_fieldsdesc": "Kenttien määrittäminen tähän mallineeseen onnistuu nykyään käyttämällä numeroita (1, 2, 3…) kentän nimenä oikean nimen sijaan.",
- "sf_createtemplate_fieldname": "Kentän nimi",
- "sf_createtemplate_displaylabel": "Näyttönimi",
- "sf_createtemplate_semanticproperty": "Semanttinen ominaisuus",
- "sf_createtemplate_fieldislist": "Tämä kenttä voi sisältää pilkuin erotetun listan arvoista",
- "sf_createtemplate_aggregation": "Aggregaatio",
- "sf_createtemplate_aggregationdesc": "Jos haluat listan (millä tahansa mallinetta käyttävällä sivulla) sivuista, joilla on tietty ominaisuus, joka osoittaa sivuun, määrittele sopiva ominaisuus alle:",
- "sf_createtemplate_aggregationlabel": "Listan otsikko",
- "sf_createtemplate_outputformat": "Tulostemuoto",
- "sf_createtemplate_standardformat": "Taulukko",
- "sf_createtemplate_infoboxformat": "Reunassa oleva tietolaatikko",
- "sf_createtemplate_plainformat": "Muotoilematon teksti",
- "sf_createtemplate_sectionsformat": "Osiot",
- "sf_createtemplate_addfield": "Lisää kenttä",
- "sf_createtemplate_deletefield": "Poista",
- "forms": "Lomakkeet",
- "sf_forms_docu": "Tässä wikissä on seuraavat lomakkeet:",
- "sf_forminputs_mandatory": "Pakollinen",
- "sf_forminputs_restricted": "Vain ylläpitäjät voivat muokata tätä",
- "sf_forminputs_class": "Tämän syötteen HTML-attribuutti \"class\"",
- "sf_forminputs_default": "Tämän syötteen oletusarvo",
- "sf_forminputs_preload": "Wikisivu, jonka sisällöstä tulee tämän syötteen oletusarvo",
- "sf_forminputs_property": "Semanttinen ominaisuus, jota tämä kenttä vastaa",
- "sf_forminputs_size": "Tämän tekstikentän koko merkkeinä",
- "sf_forminputs_maxlength": "Tekstin suurin sallittu pituus tässä kentässä",
- "sf_forminputs_placeholder": "Ohjeteksti, joka näkyy kentässä, kunnes käyttäjä napsauttaa sitä",
- "sf_forminputs_uploadable": "Lisää ”{{int:upload}}” -linkin tämän kentän viereen",
- "sf_forminputs_defaultfilename": "Ladattujen tiedostojen oletusnimi",
- "sf_forminputs_rows": "Syötteen rivimäärä",
- "sf_forminputs_cols": "Syötteen sarakemäärä",
- "sf_forminputs_autogrow": "Salli kentän koon suureneminen, jos teksti ylittää sen rajat",
- "sf_forminputs_valuesfromproperty": "Ominaisuus, jonka wikissä olevien arvojen tulisi olla tämän syöttökentän arvojoukkona.",
- "sf_forminputs_valuesfromcategory": "Luokka, jonka sivujen tulisi olla tämän syöttökentän arvojoukkona.",
- "sf_forminputs_valuesfromnamespace": "Nimiavaruus, jonka sivujen tulisi olla tämän syöttökentän arvojoukkona.",
- "sf_forminputs_valuesfromconcept": "Semantic MediaWikin konsepti, jonka sivujen tulisi olla tämän syöttökentän arvojoukkona.",
- "sf_forminputs_valuesfromurl": "Osoite, jonka jäsennellyn datan tulisi olla tämän syöttökentän arvojoukkona",
- "sf_forminputs_values": "Syötteen arvojoukko, erottimena pilkku",
- "sf_forminputs_list": "Merkitse tämä kentäksi, jolla on arvoluettelo",
- "sf_forminputs_delimiter": "Kentän arvojen erotin, jos kentällä on arvoluettelo",
- "sf_forminputs_remoteautocompletion": "Käytä automaattista etätäydennystä",
- "sf_forminputs_existingvaluesonly": "Salli vain luettelossa olevat arvot",
- "sf_forminputs_showonselect": "Sivun elementit, jotka näytetään vain, jos jokin tietty arvo on valittu (esim.: \"arvo1=>div1;arvo2=>div2\")",
- "sf_forminputs_listboxsize": "Luetteloruudun korkeus riveinä",
- "sf_forminputs_includetimezone": "Lisää aikavyöhykekenttä",
- "sf_forminputs_topcategory": "Tämän luokkajoukon ylätason luokka (pakollinen)",
- "sf_forminputs_hideroot": "Piilota ylätason luokka",
- "sf_forminputs_depth": "Alussa näytettävien luokkatasojen määrä",
- "sf_forminputs_height": "Tämän kentän korkeus pikseleinä",
- "sf_forminputs_width": "Tämän kentän leveys pikseleinä",
- "createform": "Luo lomake",
- "sf-createform-with-name": "Luo lomake: $1",
- "sf_createform_nameinput": "Lomakkeen nimi",
- "sf_createform_nameinputdesc": "(lomakkeen nimi on tavallisesti sama kuin sen päämallineen nimi):",
- "sf_createform_template": "Malline",
- "sf_createform_templatelabelinput": "Mallineen otsikko (valinnainen)",
- "sf_createform_allowmultiple": "Tämä malline voi esiintyä luodulla sivulla useasti tai ei kertaakaan",
- "sf_createform_field": "Kenttä",
- "sf_createform_fieldprop": "Tämä kenttä määrittelee ominaisuuden $1, joka on tyyppiä $2.",
- "sf_createform_fieldproplist": "Tämä kenttä määrittelee listan elementeistä, joilla on ominaisuus $1, joka on tyyppiä $2.",
- "sf_createform_fieldpropunknowntype": "Tämä kenttä määrittelee ominaisuuden $1, jonka tyyppi on määrittelemätön.",
- "sf_createform_inputtype": "Syötetyyppi",
- "sf_createform_inputtypedefault": "(oletus)",
- "sf_createform_formlabel": "Lomakkeen otsikko",
- "sf_createform_hidden": "Piilotettu",
- "sf_createform_removetemplate": "Poista malline",
- "sf_createform_addtemplate": "Lisää malline",
- "sf_createform_atend": "Lopussa",
- "sf_createform_add": "Lisää",
- "sf_createform_choosefield": "Valitse lisättävä kenttä",
- "sf_createform_before": "Ennen mallinetta",
- "sf_createform_additembeforesave": "Sinun pitää lisätä ainakin yksi malline tähän lomakkeeseen, ennen kuin voit tallentaa sen.",
- "createcategory": "Luo luokka",
- "sf-createcategory-with-name": "Luo luokka: $1",
- "sf_createcategory_name": "Luokan nimi",
- "sf_createcategory_defaultform": "Oletuslomake",
- "sf_createcategory_makesubcategory": "Tee tästä toisen luokan alaluokka (valinnainen):",
- "createclass": "Luo luokka",
- "sf_createclass_docu": "Kirjoita kaikki tiedot tähän ominaisuuksien, mallineen, muodon ja luokan luomiseksi yksittäisluokkaan. Käytä lisäasetuksia varten sen sijaan sivuja $1.",
- "sf_createclass_allowedvalues": "Sallitut arvot",
- "sf_createclass_listofvalues": "Luettelo arvoista?",
- "sf_createclass_nameinput": "Lomakkeen nimi",
- "sf_createclass_missingvalues": "Kaikkia pakollisia kenttiä ei ole täytetty.",
- "sf_createclass_success": "Ominaisuudet, malline, lomake ja luokka luodaan.",
- "sf_createclass_create": "Luo",
- "formstart": "Lomakeluonti",
- "sf_formstart_badform": "Virhe: lomaketta ei löytynyt sivulta $1.",
- "sf_formstart_badtitle": "Virhe: ”$1” on virheellinen nimi sivulle.",
- "sf_formstart_docu": "Anna sivun nimi, jota muokataan lomakkeella $1. Jos sivu on jo olemassa, sinut ohjataan lomakkeelle, jolla voi muokata sitä sivua. Muussa tapauksessa sinut ohjataan sivunlisäyslomakkeelle.",
- "sf_formstart_noform_docu": "Anna sivun nimi ja valitse lomake, jolla haluat muokata sitä. Jos sivu on jo olemassa, sinut ohjataan lomakkeelle, jolla voit muokata sitä sivua. Muussa tapauksessa sinut ohjataan sivunlisäyslomakkeelle.",
- "sf_formstart_createoredit": "Luo tai muokkaa",
- "formedit": "Muokkaa lomakkeella",
- "sf_formedit_createtitle": "Luo $1: $2",
- "sf_formedit_createtitlenotarget": "Luo $1",
- "sf_formedit_badurl": "Tämä sivu on datan lisäämistä varten. Sinun täytyy määritellä sekä lomakkeen nimi että kohdesivu URL-osoitteessa. Osoitteen pitäisi olla muotoa ”Special:FormEdit?form=<lomakkeen nimi>&target=<kohdesivu>” tai ”Special:FormEdit/<lomakkeen nimi>/<kohdesivu>”.",
- "sf_formedit_altforms": "Voit sen sijaan lisätä tämän sivun ja jonkun seuraavista lomakkeista:",
- "sf_formedit_altformsonly": "Valitse jokin seuraavista lomakkeista, jonka haluat lisätä tällä sivulle:",
- "sf_formcreate": "Luo lomakkeella",
- "sf_viewform": "Näytä lomake",
- "sf_editsource": "Muokkaa wikitekstiä",
- "sf_formedit_edittitle": "Muokkaa $1: $2",
- "sf_formedit_morethanoneform": "'''Varoitus:''' Tällä sivulla on useita oletuslomakkeita.",
- "sf_formedit_formwarning": "Varoitus: sivu <a href=\"$1\">on jo olemassa</a>, mutta se ei käytä tätä lomaketta.",
- "sf_formedit_mismatchedbrackets": "Varoitus: Sivulla ei ole lopettavia aalto- tai hakasulkeita, minkä takia lomake ei voi käsitellä sivua oikein. <a href=\"$1\">Korjaa virhe alkutekstissä</a> ennen kuin jatkat.",
- "sf_formedit_remove": "Poista",
- "sf_formedit_addanother": "Lisää toinen",
- "sf_formedit_none": "ei mikään",
- "sf_formedit_emptytitle": "Virhe: Syötetyt tiedot aiheuttavat tyhjän sivun otsikon.",
- "sf_formedit_hookerror": "Virhe: MediaWiki-laajennus esti kohdesivun muokkauksen.",
- "sf_formedit_saveandcontinueediting": "Tallenna ja jatka",
- "sf_formedit_saveandcontinue_summary": "Tallennettu lomakkeen \"$1\" -painikkeen avulla",
- "sf_formedit_tooltip_saveandcontinueediting": "Tallenna tiedot ja jatka muokkaamista",
- "sf_autoedit_anoneditwarning": "Varoitus: Et ole kirjautunut sisään. IP-osoitteesi kirjataan tämän sivun muokkaushistoriaan.",
- "sf_autoedit_success": "[[$1]]: muokkaus lomakkeen $2 avulla onnistui.",
- "sf_autoedit_fail": "[[$1]]: muokkaus epäonnistui.",
- "sf_autoedit_notargetspecified": "Kohdesivua ei ole määritetty.",
- "sf_autoedit_invalidtargetspecified": "Valitu kohdesivu $1 on väärä.",
- "sf_autoedit_invalidform": "'''$1''' ei ole kelvollinen lomake.",
- "sf_autoedit_redirectlimitexeeded": "Lomakkeen $1 ohjausten enimmäismäärä ylitettiin.",
- "sf_autoedit_invalidredirecttarget": "$1 ei ole sallittu ohjauksen kohde lomakkeelle $2.",
- "sf_autoedit_invalidpreloadspecified": "Määritetty esilaattava sivu $1 ei ole sallittu.",
- "sf_autoedit_redlinkexists": "$1 on jo olemassa.",
- "sf_autoedit_noformfound": "Lomaketta ei ole määritetty.",
- "sf_autoedit_toomanyformsfound": "Sivulla on lomaketta.",
- "sf_autoedit_readonly": "Tietokanta on lukittu eikä sitä voi muokata. Syy:$1",
- "sf_autoedit_nosemanticform": "Lomaketta $2 ei voitu noutaa sivulle $1. Lisätietoja antaa [[{{#special:FormEdit}}/$2/$1]].",
- "sf_autoedit_summary": "Muokata automaattisesti sivulta $1 .",
- "sf-autoedit-wait": "Odota...",
- "runquery": "Suorita kysely",
- "sf_runquery_badurl": "Sinun tulee antaa lomakkeen nimi URL-osoitteessa;\nosoitteen tulisi näyttää esimerkiksi tältä: ”Special:RunQuery/<form name>”.",
- "sf_runquery_title": "Suorita kysely: $1",
- "sf_runquery_additionalquery": "Lisähakukysely",
- "sf_formerrors_header": "Lomakkeen tiedoissa oli virheitä; katso alla.",
- "sf_blank_error": "ei voi olla tyhjä",
- "sf_bad_url_error": "pitää olla kelvollinen URL-osoite, jonka protokolla on http",
- "sf_bad_email_error": "pitää olla kelvollinen sähköpostiosoite",
- "sf_bad_number_error": "pitää olla kelvollinen numero",
- "sf_bad_date_error": "pitää olla kelvollinen päiväys",
- "uploadwindow": "Tallennusikkuna",
- "sf_deletionlog": "Poistoloki",
- "sf-preview-header": "Lomakkeen esikatselu",
- "sf-preview-note": "Lomake näyttää tällaiselta, kun sitä käytetään:",
- "sf-pageschemas-pagenameformula": "Sivun nimen muodostamistapa:",
- "sf-pageschemas-createtitle": "Lomakkeen otsikko uusilla sivuilla:",
- "sf-pageschemas-edittitle": "Lomakkeen otsikko nykyisillä sivuilla:",
- "sf-pageschemas-inputtype": "Syötetyyppi (jätä tyhjäksi asettaaksesi oletuksen):",
- "sf_property_isproperty": "Tämä on ominaisuus, jonka tyyppi on $1.",
- "sf_property_linkstoform": "Se linkittää sivuille, jotka käyttävät lomaketta $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Sallittu arvo tälle ominaisuudelle on|Sallitut arvot tälle ominaisuudelle ovat}}:",
- "sf_template_docu": "Tämä on malline $1. Sitä käytetään seuraavasti:",
- "sf_template_docufooter": "Muokkaa tätä sivua, jos haluat nähdä mallineen tekstin.",
- "sf_form_docu": "Tämä on lomake $1.\nJos haluat luoda sivun, jossa on tämä lomake, kirjoita sivun nimi alle.\nJos sivu on jo olemassa, sinut ohjataan lomakkeelle, jolla voi muokata kyseistä sivua.",
- "sf_form_freetextlabel": "Vapaamuotoinen teksti",
- "sf_category_hasdefaultform": "Tämä luokka käyttää lomaketta $1.",
- "sf_category_desc": "Tämä on luokka $1.",
- "sf_blank_namespace": "Päänimiavaruus",
- "right-viewedittab": "Nähdä ”Muokkaa”-välilehteä lomakkeella muokattavilla sivuilla",
- "right-editrestrictedfields": "Muokata rajoitettuja lomakekenttiä",
- "right-createclass": "Luoda uusia semanttisia luokkia",
- "action-createclass": "luoda uusia semanttisia luokkia",
- "action-editrestrictedfields": "muokata rajoitettuja lomakekenttiä",
- "action-viewedittab": "nähdä ”Muokkaa”-välilehteä lomakkeella muokattavilla sivuilla"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/fo.json b/SemanticForms/i18n/fo.json
deleted file mode 100644
index 52d6e708..00000000
--- a/SemanticForms/i18n/fo.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Diupwijk"
- ]
- },
- "templates": "Fyrimyndir"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/fr.json b/SemanticForms/i18n/fr.json
deleted file mode 100644
index 067f79f5..00000000
--- a/SemanticForms/i18n/fr.json
+++ /dev/null
@@ -1,214 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Crochet.david",
- "Dereckson",
- "Erkethan",
- "Gomoko",
- "Grondin",
- "Guillom",
- "Hashar",
- "IAlex",
- "McDutchie",
- "Peter17",
- "PieRRoMaN",
- "Rastus Vernon",
- "Sherbrooke",
- "Urhixidur",
- "Verdy p",
- "Wyz",
- "Zebulon84"
- ]
- },
- "semanticforms-desc": "Formulaires pour ajouter ou modifier des données sémantiques",
- "specialpages-group-sf_group": "Formulaires sémantiques",
- "createproperty": "Définir une propriété",
- "sf-createproperty-with-name": "Créer la propriété :$1",
- "sf_createproperty_linktoform": "Cette propriété liera vers les pages utilisant le formulaire :",
- "sf_createproperty_allowedvalsinput": "Si vous voulez restreindre ce champ à certaines valeurs, entrez la liste des valeurs permises séparées par des virgules (si une valeur contient une virgule, utilisez « \\, ») :",
- "sf_createproperty_propname": "Nom de la propriété :",
- "sf_createproperty_proptype": "Type :",
- "templates": "Modèles",
- "sf_templates_docu": "Les modèles suivants existent dans le wiki.",
- "sf_templates_definescat": "définit la catégorie : $1",
- "createtemplate": "Créer un modèle",
- "sf-createtemplate-with-name": "Créer le modèle :$1",
- "sf_createtemplate_namelabel": "Nom de modèle :",
- "sf_createtemplate_multipleinstance": "Ce modèle peut être inclus plusieurs fois dans la page.",
- "sf_createtemplate_connectingproperty": "Nom de propriété pour connecter les champs de ce modèle pour le reste de la page :",
- "sf_createtemplate_categorylabel": "Catégorie définie par ce modèle (facultatif) :",
- "sf_createtemplate_templatefields": "Champs de modèle",
- "sf_createtemplate_fieldsdesc": "Pour un modèle qui n’utilise aucun nom pour les champs, remplacez simplement les noms de champs par leurs indices (exemples : 1, 2, 3, etc.).",
- "sf_createtemplate_fieldname": "Nom du champ :",
- "sf_createtemplate_displaylabel": "Étiquette pour l’affichage :",
- "sf_createtemplate_semanticproperty": "Propriété sémantique :",
- "sf_createtemplate_fieldislist": "Ce champ peut contenir une liste de valeurs séparées par des virgules.",
- "sf_createtemplate_aggregation": "Agrégation",
- "sf_createtemplate_aggregationdesc": "Pour lister, sur chaque page utilisant ce modèle, toutes celles qui ont une propriété pointant vers celle-ci, indiquez la propriété adéquate ci-dessous :",
- "sf_createtemplate_aggregationlabel": "Titre pour la liste :",
- "sf_createtemplate_outputformat": "Format de sortie :",
- "sf_createtemplate_standardformat": "Tableau",
- "sf_createtemplate_infoboxformat": "Infobox latérale",
- "sf_createtemplate_plainformat": "Texte brut",
- "sf_createtemplate_sectionsformat": "Sections",
- "sf_createtemplate_addfield": "Ajouter un champ",
- "sf_createtemplate_deletefield": "Supprimer",
- "forms": "Formulaires",
- "sf_forms_docu": "Les formulaires suivants existent dans le wiki.",
- "sf_forminputs_mandatory": "Obligatoire",
- "sf_forminputs_restricted": "Seuls les administrateurs peuvent modifier cette entrée",
- "sf_forminputs_class": "L'attribut « classe » pour cette entrée",
- "sf_forminputs_default": "La valeur par défaut pour cette entrée",
- "sf_forminputs_preload": "Une page wiki dont le contenu sera la valeur par défaut de cette entrée",
- "sf_forminputs_property": "Une propriété sémantique à laquelle ce champ fait référence",
- "sf_forminputs_size": "La taille de ce champ de texte, en caractères",
- "sf_forminputs_maxlength": "La longueur de texte maximale autorisée pour ce champ",
- "sf_forminputs_placeholder": "Texte d'aide qui apparaît dans l'entrée jusqu'à ce que l'utilisateur clique dessus",
- "sf_forminputs_uploadable": "Placer un lien \"{{int:upload}}\" à côté de cette entrée",
- "sf_forminputs_defaultfilename": "Le nom de fichier par défaut pour les fichiers téléchargés",
- "sf_forminputs_rows": "Le nombre de lignes pour cette entrée.",
- "sf_forminputs_cols": "Le nombre de colonnes pour cette entrée.",
- "sf_forminputs_autogrow": "Autoriser cette entrée à s'agrandir si la longueur du texte dépasse les limites",
- "sf_forminputs_valuesfromproperty": "Une propriété dont les valeurs dans ce wiki devraient être l’ensemble des valeurs de cette entrée",
- "sf_forminputs_valuesfromcategory": "Une catégorie dont les pages devraient être l'ensemble des valeurs de cette entrée",
- "sf_forminputs_valuesfromnamespace": "Un espace de noms dont les pages devraient être l'ensemble des valeurs de cette entrée",
- "sf_forminputs_valuesfromconcept": "Une page « concept » de Semantic MediaWiki dont les pages devraient êtres l'ensemble des valeurs de cette entrée",
- "sf_forminputs_valuesfromurl": "Une URL contenant des données structurées qui devraient être l'ensemble des valeurs de cette entrée",
- "sf_forminputs_values": "L'ensemble des valeurs pour cette entrée, séparées par des virgules",
- "sf_forminputs_list": "Marquer cette entrée comme tenant une liste de valeurs",
- "sf_forminputs_delimiter": "Le séparateur entre les valeurs du champ, si cette entrée tient une liste de valeurs",
- "sf_forminputs_remoteautocompletion": "Utiliser la complétion automatique à distance",
- "sf_forminputs_existingvaluesonly": "N'autoriser que les valeurs déjà dans la liste",
- "sf_forminputs_showonselect": "Éléments de page à afficher uniquement si certaines valeurs sont sélectionnées (par exemple: « valeur1=>div1;valeur2=>div2 »)",
- "sf_forminputs_listboxsize": "La hauteur de cette zone de liste, en nombre de lignes",
- "sf_forminputs_includetimezone": "Ajouter un champ pour le fuseau horaire",
- "sf_forminputs_topcategory": "La catégorie parente de cet ensemble de catégories (obligatoire)",
- "sf_forminputs_hideroot": "Masquer la catégorie parente",
- "sf_forminputs_depth": "Le nombre de niveaux de catégorie à montrer au départ",
- "sf_forminputs_height": "La hauteur de cette entrée, en pixels",
- "sf_forminputs_width": "La largeur de cette entrée, en pixels",
- "createform": "Créer un formulaire",
- "sf-createform-with-name": "Créer le formulaire :$1",
- "sf_createform_nameinput": "Nom de formulaire",
- "sf_createform_nameinputdesc": "(le nom du formulaire est généralement le même que son modèle principal) :",
- "sf_createform_template": "Modèle :",
- "sf_createform_templatelabelinput": "Étiquette de modèle (facultatif) :",
- "sf_createform_allowmultiple": "Permettre plusieurs (ou zéro) instances de ce modèle dans la page créée",
- "sf_createform_field": "Champ :",
- "sf_createform_fieldprop": "Ce champ définit la propriété $1, de type $2.",
- "sf_createform_fieldproplist": "Ce champ définit une liste des éléments qui ont la propriété $1, de type $2.",
- "sf_createform_fieldpropunknowntype": "Ce champ définit la propriété $1, de type indéterminé.",
- "sf_createform_inputtype": "Type d’entrée :",
- "sf_createform_inputtypedefault": "(par défaut)",
- "sf_createform_formlabel": "Étiquette dans le formulaire :",
- "sf_createform_hidden": "Masqué",
- "sf_createform_removetemplate": "Enlever ce modèle",
- "sf_createform_addtemplate": "Ajouter un modèle :",
- "sf_createform_atend": "À la fin",
- "sf_createform_add": "Ajouter",
- "sf_createform_choosefield": "Choisissez un champ à ajouter",
- "sf_createform_pagesection": "Section de la page :",
- "sf_createform_addsection": "Ajouter une section",
- "sf_createform_removesection": "Enlever une section",
- "sf_createform_before": "Avant le modèle :",
- "sf_createform_addelements": "Ajouter des éléments",
- "sf_createform_hiddensection": "Cette entrée est cachée dans le formulaire",
- "sf_createform_sectionlevel": "Niveau de section :",
- "sf_createform_sectionname": "Nom de la section",
- "sf_createform_additembeforesave": "Vous devez ajouter au moins un modèle à ce formulaire avant de pouvoir le sauvegarder.",
- "sf_createform_otherparameters": "Autres paramètres",
- "createcategory": "Créer une catégorie",
- "sf-createcategory-with-name": "Créer la catégorie : $1",
- "sf_createcategory_name": "Nom de la catégorie :",
- "sf_createcategory_defaultform": "Formulaire par défaut :",
- "sf_createcategory_makesubcategory": "Crée une sous-catégorie d’une autre catégorie (facultatif) :",
- "createclass": "Créer une classe",
- "sf_createclass_docu": "Spécifiez ici les données servant à créer les propriétés, modèle, formulaire et catégorie d’une classe. Pour plus d’options, utilisez plutôt les pages $1.",
- "sf_createclass_allowedvalues": "Valeurs autorisées :",
- "sf_createclass_listofvalues": "Liste de valeurs ?",
- "sf_createclass_nameinput": "Nom du formulaire :",
- "sf_createclass_missingvalues": "Les champs obligatoires n’ont pas tous été remplis.",
- "sf_createclass_success": "Les propriétés, modèle, formulaire et catégorie seront créés.",
- "sf_createclass_create": "Créer",
- "formstart": "Ajouter une page avec un formulaire",
- "sf_formstart_badform": "Erreur : aucune page de formulaire n’a été trouvée sur $1.",
- "sf_formstart_badtitle": "Erreur : « $1 » est un titre de page invalide.",
- "sf_formstart_docu": "Entrez ici le nom de la page destinée à être modifiée avec le formulaire « $1 ». Si cette page existe déjà, vous serez dirigé vers le formulaire afin de le modifier. Dans le cas contraire, vous serez redirigé vers celui permettant de l’ajouter.",
- "sf_formstart_noform_docu": "Entrez ici le nom de la page, puis sélectionnez le formulaire qui servira à la modifier. Si cette page existe déjà, vous serez dirigé vers le formulaire afin de le modifier. Dans le cas contraire, vous serez redirigé vers celui permettant de l’ajouter.",
- "sf_formstart_createoredit": "Créer ou modifier",
- "formedit": "Modifier avec formulaire",
- "sf_formedit_createtitle": "Créer $1 : $2",
- "sf_formedit_createtitlenotarget": "Créer $1",
- "sf_formedit_badurl": "Ceci est la page pour modifier les données en utilisant un formulaire. Il faut indiquer un nom de formulaire et une page cible dans l’URL ;\nl’URL doit ressembler à « Special:FormEdit?form=<nom de formulaire>&target=<nom de page cible> » ou « Special:FormEdit/<nom de formulaire>/<nom de page cible> ».",
- "sf_formedit_altforms": "Vous pouvez, à la place, ajouter cette page avec l’un des formulaires suivants :",
- "sf_formedit_altformsonly": "Vous êtes prié{{GENDER:||e|(e)}} de sélectionner l’un des formulaires suivants pour ajouter cette page :",
- "sf_formcreate": "Créer avec un formulaire",
- "sf_viewform": "Voir le formulaire",
- "sf_editsource": "Modifier le wikicode",
- "sf_formedit_edittitle": "Modifier $1 : $2",
- "sf_formedit_morethanoneform": "Avertissement : Plus d’un formulaire par défaut est spécifié pour cette page.",
- "sf_formedit_formwarning": "Attention : cette page <a href=\"$1\">existe déjà</a>, mais elle n’utilise pas ce formulaire.",
- "sf_formedit_mismatchedbrackets": "Attention: Cette page contient des crochets ou des accolades qui ne sont pas fermés; la page ne sera donc pas affichée correctement par le formulaire. Veuillez <a href=\"$1\">corriger l'erreur dans le texte de la source</a> avant de poursuivre.",
- "sf_formedit_remove": "Enlever cette instance",
- "sf_formedit_addanotherabove": "Ajouter une autre instance au-dessus de celle-ci",
- "sf_formedit_addanother": "Ajouter une autre",
- "sf_formedit_none": "Aucune",
- "sf_formedit_emptytitle": "Erreur : les données insérées entraînent un titre de page vide.",
- "sf_formedit_hookerror": "Erreur : Une extension de MediaWiki a empêché la modification de la page cible.",
- "sf_formedit_saveandcontinueediting": "Sauvegarder et continuer",
- "sf_formedit_saveandcontinue_summary": "Enregistré en utilisant le bouton \"$1\" du formulaire",
- "sf_formedit_tooltip_saveandcontinueediting": "Sauvegarder les données et continuer la modification",
- "sf_autoedit_anoneditwarning": "Attention : vous n’êtes pas identifié(e). Votre adresse IP sera enregistrée dans l’historique des modifications de cette page.",
- "sf_autoedit_success": "[[$1]] modifié avec succès en utilisant le formulaire $2.",
- "sf_autoedit_fail": "La modification de [[$1]] a échoué.",
- "sf_autoedit_notargetspecified": "Aucune page cible spécifiée.",
- "sf_autoedit_invalidtargetspecified": "La page cible spécifiée '''$1''' n’est pas valide.",
- "sf_autoedit_invalidform": "'''$1''' n’est pas un formulaire valide.",
- "sf_autoedit_redirectlimitexeeded": "La limite de redirections maximale pour le formulaire $1 a été dépassée.",
- "sf_autoedit_invalidredirecttarget": "$1 est un lien de redirection non valide pour le formulaire $2.",
- "sf_autoedit_invalidpreloadspecified": "La page de préchargement spécifiée $1 n'est pas valide.",
- "sf_autoedit_redlinkexists": "$1 existe déjà.",
- "sf_autoedit_noformfound": "Pas de formulaire spécifié.",
- "sf_autoedit_toomanyformsfound": "Plus d'un formulaire est disponible pour la page.",
- "sf_autoedit_readonly": "La base de données est actuellement verrouillé pour modifications. Motif: $1",
- "sf_autoedit_nosemanticform": "Impossible d'obtenir le formulaire $2 pour la page $1. Voyez [[{{#special:FormEdit}}/$2/$1]] pour plus de détails.",
- "sf_autoedit_summary": "Modifié automatiquement depuis la page $1.",
- "sf-autoedit-wait": "Patientez...",
- "runquery": "Exécuter la requête",
- "sf_runquery_badurl": "Vous devez spécifier un nom de formulaire dans l’URL ;\nquelque chose comme « Special:RunQuery/<nom du formulaire> ».",
- "sf_runquery_title": "Exécuter la requête : $1",
- "sf_runquery_additionalquery": "Requête additionnelle",
- "sf_formerrors_header": "Il y a certaines erreurs dans le formulaire. Cf. ci-dessous.",
- "sf_too_few_instances_error": "Il doit y avoir au moins $1 instances de ce modèle.",
- "sf_too_many_instances_error": "Il ne doit pas y avoir plus de $1 instances de ce modèle.",
- "sf_blank_error": "ne peut pas être blanc",
- "sf_bad_url_error": "doit avoir un format URL correct, commençant par « http »",
- "sf_bad_email_error": "doit avoir un format correct d’adresse courriel.",
- "sf_bad_number_error": "doit être un nombre valide",
- "sf_bad_date_error": "doit être une date valide",
- "uploadwindow": "Fenêtre de téléversement",
- "sf_deletionlog": "Historique des suppressions",
- "sf-preview-header": "Aperçu du formulaire",
- "sf-preview-note": "Voilà à qui ressemblera le formulaire une fois utilisé:",
- "sf-pageschemas-pagenameformula": "Formule du nom de page:",
- "sf-pageschemas-createtitle": "Titre du formulaire pour les nouvelles pages:",
- "sf-pageschemas-edittitle": "Titre du formulaire pour les pages existantes:",
- "sf-pageschemas-inputtype": "Type d'entrée (laissez-le à blanc pour la valeur par défaut):",
- "sf-pageschemas-otherparams": "Entrez les noms des paramètres et leurs valeurs comme clé = paires de valeur, séparées par des virgules (si une valeur contient une virgule, la remplacer par « \\, »). Par exemple :$1",
- "sf_property_isproperty": "Cette propriété est de type $1.",
- "sf_property_linkstoform": "Elle pointe sur les pages utilisant le formulaire $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|La valeur autorisée pour cette propriété est|Les valeurs autorisées pour cette propriété sont}} :",
- "sf_template_docu": "Ceci est le modèle « $1 ». Il devrait être appelé selon le format suivant :",
- "sf_template_docufooter": "Modifier la page pour voir le texte du modèle.",
- "sf_form_docu": "Ceci est le formulaire « $1 ».\nPour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;\nsi une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.",
- "sf_form_freetextlabel": "Texte libre",
- "sf_category_hasdefaultform": "Cette catégorie utilise le formulaire « $1 ».",
- "sf_category_desc": "Ceci est la catégorie « $1 ».",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Voir l’onglet \"{{int:edit}}\" pour les pages modifiables via un formulaire",
- "right-editrestrictedfields": "Modifier les champs restreints des formulaires",
- "right-createclass": "Créer de nouvelles classes sémantiques",
- "action-createclass": "créer de nouvelles classes sémantiques",
- "action-editrestrictedfields": "Modifier les champs de formulaire protégés",
- "action-viewedittab": "voir l’onglet \"{{int:edit}}\" pour les pages modifiables via un formulaire"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/frp.json b/SemanticForms/i18n/frp.json
deleted file mode 100644
index ab9cdbd4..00000000
--- a/SemanticForms/i18n/frp.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Cedric31",
- "ChrisPtDe"
- ]
- },
- "specialpages-group-sf_group": "Formulèros sèmanticos",
- "createproperty": "Fâre una propriètât",
- "sf-createproperty-with-name": "Fâre la propriètât : $1",
- "sf_createproperty_propname": "Nom de la propriètât :",
- "sf_createproperty_proptype": "Tipo :",
- "templates": "Modèlos",
- "sf_templates_docu": "Cetos modèlos ègzistont dens lo vouiqui.",
- "sf_templates_definescat": "dèfenét la catègorie : $1",
- "createtemplate": "Fâre un modèlo",
- "sf-createtemplate-with-name": "Fâre lo modèlo : $1",
- "sf_createtemplate_namelabel": "Nom du modèlo :",
- "sf_createtemplate_categorylabel": "Catègorie dèfenia per lo modèlo (u chouèx) :",
- "sf_createtemplate_templatefields": "Champs de modèlo",
- "sf_createtemplate_fieldname": "Nom du champ :",
- "sf_createtemplate_displaylabel": "Ètiquèta por la visualisacion :",
- "sf_createtemplate_semanticproperty": "Propriètât sèmantica :",
- "sf_createtemplate_aggregation": "Agrègacion",
- "sf_createtemplate_aggregationlabel": "Titro por la lista :",
- "sf_createtemplate_outputformat": "Format de sortia :",
- "sf_createtemplate_standardformat": "Grelye",
- "sf_createtemplate_infoboxformat": "Enfocajon de fllanc",
- "sf_createtemplate_plainformat": "Tèxto bruto",
- "sf_createtemplate_sectionsformat": "Sèccions",
- "sf_createtemplate_addfield": "Apondre un champ",
- "sf_createtemplate_deletefield": "Suprimar",
- "forms": "Formulèros",
- "sf_forms_docu": "Cetos formulèros ègzistont dens lo vouiqui.",
- "sf_forminputs_mandatory": "Oblegatouèro",
- "sf_forminputs_restricted": "Solament los administrators lo pôvont changiér",
- "sf_forminputs_rows": "Lo nombro de legnes por cela entrâ",
- "sf_forminputs_cols": "Lo nombro de colones por cela entrâ",
- "sf_forminputs_height": "La hôtior de cela entrâ, en pixèls",
- "sf_forminputs_width": "La largior de cela entrâ, en pixèls",
- "createform": "Fâre un formulèro",
- "sf-createform-with-name": "Fâre lo formulèro : $1",
- "sf_createform_nameinput": "Nom de formulèro",
- "sf_createform_template": "Modèlo :",
- "sf_createform_templatelabelinput": "Ètiquèta de modèlo (u chouèx) :",
- "sf_createform_field": "Champ :",
- "sf_createform_inputtype": "Tipo d’entrâ :",
- "sf_createform_inputtypedefault": "(per dèfôt)",
- "sf_createform_formlabel": "Ètiquèta dens lo formulèro :",
- "sf_createform_hidden": "Cachiê",
- "sf_createform_removetemplate": "Enlevar lo modèlo",
- "sf_createform_addtemplate": "Apondre un modèlo :",
- "sf_createform_atend": "A la fin",
- "sf_createform_add": "Apondre",
- "sf_createform_choosefield": "Chouèsésséd un champ a apondre",
- "sf_createform_before": "Devant lo modèlo :",
- "createcategory": "Fâre una catègorie",
- "sf-createcategory-with-name": "Fâre la catègorie : $1",
- "sf_createcategory_name": "Nom de la catègorie :",
- "sf_createcategory_defaultform": "Formulèro per dèfôt :",
- "createclass": "Fâre una cllâsse",
- "sf_createclass_allowedvalues": "Valors ôtorisâs :",
- "sf_createclass_listofvalues": "Lista de valors ?",
- "sf_createclass_nameinput": "Nom du formulèro :",
- "sf_createclass_create": "Fâre",
- "formstart": "Apondre una pâge avouéc un formulèro",
- "sf_formstart_createoredit": "Fâre ou ben changiér",
- "formedit": "Changiér avouéc un formulèro",
- "sf_formedit_createtitle": "Fâre $1 : $2",
- "sf_formedit_createtitlenotarget": "Fâre $1",
- "sf_formcreate": "Fâre avouéc un formulèro",
- "sf_viewform": "Vêre lo formulèro",
- "sf_editsource": "Changiér la sôrsa",
- "sf_formedit_edittitle": "Changiér $1 : $2",
- "sf_formedit_remove": "Enlevar",
- "sf_formedit_addanother": "Apondre una ôtra",
- "sf_formedit_none": "Niona",
- "sf_formedit_saveandcontinueediting": "Sôvar et pués continuar",
- "sf_formedit_tooltip_saveandcontinueediting": "Sôvar les balyês et pués continuar lo changement",
- "sf_autoedit_success": "[[$1]] changiê avouéc reusséta en utilisent lo formulèro $2.",
- "sf_autoedit_notargetspecified": "Gins de pâge ciba spècefiâ.",
- "sf_autoedit_noformfound": "Gins de formulèro spècefiâ.",
- "sf-autoedit-wait": "Pacientâd...",
- "runquery": "Ègzécutar la requéta",
- "sf_runquery_title": "Ègzécutar la requéta : $1",
- "sf_runquery_additionalquery": "Requéta de ples",
- "sf_blank_error": "pôt pas étre vouedo",
- "sf_bad_number_error": "dêt étre un nombro valido",
- "sf_bad_date_error": "dêt étre una dâta valida",
- "uploadwindow": "Fenétra de tèlèchargement",
- "sf_deletionlog": "Jornal de les suprèssions",
- "sf-pageschemas-pagenameformula": "Formula du nom de pâge :",
- "sf_property_isproperty": "Ceta propriètât est de tipo « $1 ».",
- "sf_form_freetextlabel": "Tèxto libro",
- "sf_category_hasdefaultform": "Ceta catègorie utilise lo formulèro « $1 ».",
- "sf_category_desc": "O est la catègorie « $1 ».",
- "sf_blank_namespace": "Principâl",
- "right-editrestrictedfields": "Changiér los champs rètrents des formulèros"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/fy.json b/SemanticForms/i18n/fy.json
deleted file mode 100644
index e1d4a797..00000000
--- a/SemanticForms/i18n/fy.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Kening Aldgilles",
- "Snakesteuben"
- ]
- },
- "sf_createtemplate_standardformat": "Tabel",
- "sf_createtemplate_deletefield": "Wiskje",
- "sf_createform_inputtypedefault": "(standert)",
- "sf_createform_add": "Tafoegje",
- "sf_editsource": "Bewurkje boarne",
- "sf_formedit_none": "Gjin"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ga.json b/SemanticForms/i18n/ga.json
deleted file mode 100644
index de595bfa..00000000
--- a/SemanticForms/i18n/ga.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "පසිඳු කාවින්ද"
- ]
- },
- "sf_createproperty_proptype": "Saghas:",
- "sf_createtemplate_deletefield": "Scrios",
- "sf_createform_template": "Teimpléad:",
- "sf_createclass_create": "Cruthaigh",
- "sf_formedit_none": "Tada"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/gl.json b/SemanticForms/i18n/gl.json
deleted file mode 100644
index 9f8cc96b..00000000
--- a/SemanticForms/i18n/gl.json
+++ /dev/null
@@ -1,201 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Alma",
- "McDutchie",
- "Toliño",
- "Xosé"
- ]
- },
- "semanticforms-desc": "Formularios para engadir e editar datos semánticos",
- "specialpages-group-sf_group": "Formularios semánticos",
- "createproperty": "Crear unha propiedade",
- "sf-createproperty-with-name": "Crear a propiedade: $1",
- "sf_createproperty_linktoform": "Esta propiedade ligará ás páxinas que usan o formulario:",
- "sf_createproperty_allowedvalsinput": "Se quere que esta propiedade só teña permitidos determinados valores, introduza a lista de valores permitidos separados por comas (se un valor contén unha coma substitúaa por \"\\,\"):",
- "sf_createproperty_propname": "Nome da propiedade:",
- "sf_createproperty_proptype": "Tipo:",
- "templates": "Modelos",
- "sf_templates_docu": "Os seguintes modelos existen neste wiki.",
- "sf_templates_definescat": "define a categoría: $1",
- "createtemplate": "Crear un modelo",
- "sf-createtemplate-with-name": "Crear o modelo: $1",
- "sf_createtemplate_namelabel": "Nome do modelo:",
- "sf_createtemplate_multipleinstance": "Este modelo pódese incluír varias veces na páxina.",
- "sf_createtemplate_connectingproperty": "Nome da propiedade para conectar os campos deste modelo co resto da páxina:",
- "sf_createtemplate_categorylabel": "Categoría definida polo modelo (opcional):",
- "sf_createtemplate_templatefields": "Modelo dos campos",
- "sf_createtemplate_fieldsdesc": "Para facer que os campos deste modelo non requiran xa nomes de campo, simplemente introduza o índice de cada campo (p. ex. 1, 2, 3, etc.) como nome, no canto dun nome real.",
- "sf_createtemplate_fieldname": "Nome do campo:",
- "sf_createtemplate_displaylabel": "Mostrar a etiqueta:",
- "sf_createtemplate_semanticproperty": "Propiedade semántica:",
- "sf_createtemplate_fieldislist": "Este campo pode conter unha lista de valores separados por vírgulas",
- "sf_createtemplate_aggregation": "Agregación",
- "sf_createtemplate_aggregationdesc": "Para listar, en calquera páxina que use este modelo, todas as páxinas que teñen unha propiedade determinada que apunte cara a ela, especifique a propiedade apropiada a continuación:",
- "sf_createtemplate_aggregationlabel": "Título para a lista:",
- "sf_createtemplate_outputformat": "Formato de saída:",
- "sf_createtemplate_standardformat": "Táboa",
- "sf_createtemplate_infoboxformat": "Caixa de información lateral",
- "sf_createtemplate_plainformat": "Texto simple",
- "sf_createtemplate_sectionsformat": "Seccións",
- "sf_createtemplate_addfield": "Engadir un campo",
- "sf_createtemplate_deletefield": "Borrar",
- "forms": "Formularios",
- "sf_forms_docu": "Os seguintes formularios existen neste wiki.",
- "sf_forminputs_mandatory": "Obrigatorio",
- "sf_forminputs_restricted": "Só os administradores poden modificar esta entrada",
- "sf_forminputs_class": "O atributo \"class\" HTML para esta entrada",
- "sf_forminputs_default": "O valor por defecto para esta entrada",
- "sf_forminputs_preload": "Unha páxina wiki cuxos contidos serán o valor por defecto desta entrada",
- "sf_forminputs_property": "Unha propiedade semántica á que este campo corresponde",
- "sf_forminputs_size": "O tamaño deste campo de texto, en caracteres",
- "sf_forminputs_maxlength": "A lonxitude de texto máxima permitida neste campo",
- "sf_forminputs_placeholder": "Texto de axuda que aparece na entrada ata que o usuario fai clic sobre el",
- "sf_forminputs_uploadable": "Colocar unha ligazón \"{{int:upload}}\" ao carón desta entrada",
- "sf_forminputs_defaultfilename": "O nome de ficheiro por defecto para os ficheiros cargados",
- "sf_forminputs_rows": "O número de liñas para esta entrada",
- "sf_forminputs_cols": "O número de columnas para esta entrada",
- "sf_forminputs_autogrow": "Defina esta entrada para que medre en tamaño se o texto supera os límites",
- "sf_forminputs_valuesfromproperty": "Unha propiedade cuxos valores no wiki deben ser o conxunto de valores desta entrada",
- "sf_forminputs_valuesfromcategory": "Unha categoría cuxas páxinas deben ser o conxunto de valores desta entrada",
- "sf_forminputs_valuesfromnamespace": "Un espazo de nomes cuxas páxinas deben ser o conxunto de valores desta entrada",
- "sf_forminputs_valuesfromconcept": "Unha páxina de \"concepto\" de Semantic MediaWiki cuxas páxinas deben ser o conxunto de valores desta entrada",
- "sf_forminputs_valuesfromurl": "Un enderezo URL que contén datos estruturados que deben ser o conxunto de valores desta entrada",
- "sf_forminputs_values": "O conxunto de valores para esta entrada, separados por comas",
- "sf_forminputs_list": "Marcar esta entrada como que ten unha lista de valores",
- "sf_forminputs_delimiter": "O delimitador entre os valores do campo, se esta entrada ten unha lista de valores",
- "sf_forminputs_remoteautocompletion": "Empregar o completado automático remoto",
- "sf_forminputs_existingvaluesonly": "Permitir soamente os valores que xa estean na lista",
- "sf_forminputs_showonselect": "Elementos da páxina que mostrar se só se seleccionan algúns valores determinados (por exemplo: \"valor1=>div1;valor2=>div2\")",
- "sf_forminputs_listboxsize": "A altura desta caixa de listas, en liñas",
- "sf_forminputs_includetimezone": "Incluír unha entrada para a zona horaria",
- "sf_forminputs_topcategory": "A categoría nai deste conxunto de categorías (obrigatorio)",
- "sf_forminputs_hideroot": "Agochar a categoría raíz",
- "sf_forminputs_depth": "O número de niveis de categorías que mostrar inicialmente",
- "sf_forminputs_height": "A altura desta entrada, en píxeles",
- "sf_forminputs_width": "O largo desta entrada, en píxeles",
- "createform": "Crear un formulario",
- "sf-createform-with-name": "Crear o formulario: $1",
- "sf_createform_nameinput": "Nome do formulario",
- "sf_createform_nameinputdesc": "(normalmente, o formulario recibe o mesmo nome ca o seu modelo principal):",
- "sf_createform_template": "Modelo:",
- "sf_createform_templatelabelinput": "Etiqueta do modelo (opcional):",
- "sf_createform_allowmultiple": "Permitir varias instancias (ou cero) deste modelo na páxina creada",
- "sf_createform_field": "Campo:",
- "sf_createform_fieldprop": "Este campo define a propiedade $1, de clase $2.",
- "sf_createform_fieldproplist": "Este campo define unha lista dos elementos que teñen a propiedade $1, da clase $2.",
- "sf_createform_fieldpropunknowntype": "Este campo define a propiedade $1, de clase non especificada.",
- "sf_createform_inputtype": "Tipo de entrada:",
- "sf_createform_inputtypedefault": "(por omisión)",
- "sf_createform_formlabel": "Etiqueta de formulario:",
- "sf_createform_hidden": "Agochado",
- "sf_createform_removetemplate": "Eliminar un modelo",
- "sf_createform_addtemplate": "Engadir o modelo:",
- "sf_createform_atend": "Ao final",
- "sf_createform_add": "Engadir",
- "sf_createform_choosefield": "Elixa un campo para engadir",
- "sf_createform_pagesection": "Sección da páxina:",
- "sf_createform_addsection": "Engadir unha sección",
- "sf_createform_removesection": "Eliminar a sección",
- "sf_createform_before": "Antes:",
- "sf_createform_addelements": "Engadir os elementos",
- "sf_createform_hiddensection": "Esta entrada está agochada no formulario",
- "sf_createform_sectionlevel": "Nivel de sección:",
- "sf_createform_sectionname": "Nome da sección",
- "sf_createform_additembeforesave": "Ten que engadir, polo menos, un modelo ou unha sección de páxina a este formulario antes de podelo gardar.",
- "sf_createform_otherparameters": "Outros parámetros",
- "createcategory": "Crear unha categoría",
- "sf-createcategory-with-name": "Crear a categoría: $1",
- "sf_createcategory_name": "Nome da categoría:",
- "sf_createcategory_defaultform": "Formulario predefinido:",
- "sf_createcategory_makesubcategory": "Facer unha subcategoría doutra categoría (opcional):",
- "createclass": "Crear unha clase",
- "sf_createclass_docu": "Insira todos os datos aquí para crear as propiedades, o modelo, o formulario e a categoría para unha única clase. Para ollar máis opcións, use as páxinas $1 no canto desta.",
- "sf_createclass_allowedvalues": "Valores permitidos:",
- "sf_createclass_listofvalues": "Lista de valores?",
- "sf_createclass_nameinput": "Nome do formulario:",
- "sf_createclass_missingvalues": "Non todos os campos obrigatorios foron enchidos.",
- "sf_createclass_success": "As propiedades, o modelo, o formulario e a categoría serán creados.",
- "sf_createclass_create": "Crear",
- "formstart": "Engadir unha páxina con formulario",
- "sf_formstart_badform": "Erro: Non se atopou ningún formulario na páxina \"$1\".",
- "sf_formstart_badtitle": "Erro: \"$1\" é un título incorrecto para unha páxina.",
- "sf_formstart_docu": "Introduza aquí o nome da páxina que se editará co formulario \"$1\". Se esta páxina xa existise, enviaráselle ao formulario para editar esa páxina. De non ser así, enviaráselle ao formulario para engadir a páxina.",
- "sf_formstart_noform_docu": "Introduza aquí o nome da páxina e escolla o formulario co que a quere editar. Se esta páxina xa existise, enviaráselle ao formulario para editar esa páxina. De non ser así, enviaráselle ao formulario para engadir a páxina.",
- "sf_formstart_createoredit": "Crear ou editar",
- "formedit": "Editar con formulario",
- "sf_formedit_createtitle": "Crear $1: $2",
- "sf_formedit_createtitlenotarget": "Crear \"$1\"",
- "sf_formedit_badurl": "Esta é a páxina para editar cun formulario. Ten que especificar un nome de formulario e unha páxina de destino no URL;\ndebería ser algo así como \"Special:FormEdit?form=<nome do formulario>&target=<páxina de destino>\" ou \"Special:FormEdit/<nome do formulario>/<páxina de destino>\".",
- "sf_formedit_altforms": "Vostede pode engadir esta páxina cun dos seguintes formularios:",
- "sf_formedit_altformsonly": "Seleccione un dos seguintes formularios para engadir esta páxina:",
- "sf_formcreate": "Crear cun formulario",
- "sf_viewform": "Ver o formulario",
- "sf_editsource": "Editar a fonte",
- "sf_formedit_edittitle": "Editar $1: $2",
- "sf_formedit_morethanoneform": "'''Aviso:''' Hai máis dun formulario definido por defecto para esta páxina.",
- "sf_formedit_formwarning": "Aviso: Esta páxina <a href=\"$1\">xa existe</a>, pero non usa este formulario.",
- "sf_formedit_mismatchedbrackets": "Aviso: Esta páxina contén parénteses, corchetes ou chaves sen pechar, de modo que o formulario non manexará a páxina correctamente. <a href=\"$1\">Arranxe o erro no texto fonte</a> antes de continuar.",
- "sf_formedit_remove": "Eliminar esta instancia",
- "sf_formedit_addanotherabove": "Engadir outra instancia por riba desta",
- "sf_formedit_addanother": "Engadir outro",
- "sf_formedit_none": "Ningún",
- "sf_formedit_emptytitle": "Erro: Os datos inseridos deron como resultado un título de páxina en branco.",
- "sf_formedit_hookerror": "Erro: Unha extensión de MediaWiki impediu a modificación da páxina de destino.",
- "sf_formedit_saveandcontinueediting": "Gardar e continuar",
- "sf_formedit_saveandcontinue_summary": "Gardado mediante o botón \"$1\" do formulario",
- "sf_formedit_tooltip_saveandcontinueediting": "Gardar os datos e continuar a edición",
- "sf_autoedit_anoneditwarning": "Aviso: Non accedeu ao sistema. O seu enderezo IP quedará rexistrado no historial de revisións desta páxina.",
- "sf_autoedit_success": "Modificouse correctamente \"[[$1]]\" empregando $2.",
- "sf_autoedit_fail": "Erro ao modificar \"[[$1]]\".",
- "sf_autoedit_notargetspecified": "Non se especificou ningunha páxina de destino.",
- "sf_autoedit_invalidtargetspecified": "A páxina de destino especificada, \"'''$1'''\", non é válida.",
- "sf_autoedit_invalidform": "\"'''$1'''\" non é un formulario válido.",
- "sf_autoedit_redirectlimitexeeded": "Superouse o límite máximo de redireccións para o formulario \"$1\".",
- "sf_autoedit_invalidredirecttarget": "\"$1\" non é un destino de redirección válido para o formulario \"$2\".",
- "sf_autoedit_invalidpreloadspecified": "A páxina de precarga especificada, \"$1\", non é válida.",
- "sf_autoedit_redlinkexists": "\"$1\" xa existe.",
- "sf_autoedit_noformfound": "Non se especificou ningún formulario.",
- "sf_autoedit_toomanyformsfound": "Hai máis dun formulario dispoñible para a páxina.",
- "sf_autoedit_readonly": "A base de datos está pechada ás modificacións. Motivo: $1",
- "sf_autoedit_nosemanticform": "Non se puido obter o formulario \"$2\" para a páxina \"$1\". Olle [[{{#special:FormEdit}}/$2/$1]] para coñecer máis detalles.",
- "sf_autoedit_summary": "Editado automaticamente a partir da páxina \"$1\".",
- "sf-autoedit-wait": "Agarde...",
- "runquery": "Executar a pescuda",
- "sf_runquery_badurl": "Debe especificar un nome de formulario no enderezo URL;\no URL debe ser do tipo \"Special:RunQuery/<nome do formulario>\".",
- "sf_runquery_title": "Executar a pescuda: $1",
- "sf_runquery_additionalquery": "Pescuda adicional",
- "sf_formerrors_header": "Producíronse erros na entrada do seu formulario; vexa máis abaixo",
- "sf_too_few_instances_error": "Debe haber, polo menos, $1 instancias deste modelo.",
- "sf_too_many_instances_error": "Non debe haber máis de $1 instancias deste modelo.",
- "sf_blank_error": "non poden estar en blanco",
- "sf_bad_url_error": "debe ter un correcto formato URL, comezando con 'http'",
- "sf_bad_email_error": "debe ter un enderezo de correo electrónico cun formato válido",
- "sf_bad_number_error": "debe ser un número válido",
- "sf_bad_date_error": "debe ser unha data válida",
- "uploadwindow": "Ventá de carga",
- "sf_deletionlog": "Rexistro de borrados",
- "sf-preview-header": "Vista previa do formulario",
- "sf-preview-note": "Así será o formulario ao empregalo:",
- "sf-pageschemas-pagenameformula": "Fórmula do nome da páxina:",
- "sf-pageschemas-createtitle": "Título do formulario para as páxinas novas:",
- "sf-pageschemas-edittitle": "Título do formulario para as páxinas existentes:",
- "sf-pageschemas-inputtype": "Tipo de entrada (déixeo en branco para definir o predeterminado):",
- "sf-pageschemas-otherparams": "Insira os nomes dos parámetros e mais os seus valores como pares clave=valor, separados por comas (se un valor contén unha coma, substitúaa por \"\\,\"). Por exemplo: $1",
- "sf_property_isproperty": "Esta é unha propiedade de clase $1.",
- "sf_property_linkstoform": "Liga con páxinas que usan o formulario $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|O valor permitido|Os valores permitidos}} para esta propiedade {{PLURAL:$1|é|son}}:",
- "sf_template_docu": "Este é o modelo '$1'. Pode ser chamado no seguinte formato:",
- "sf_template_docufooter": "Editar a páxina para ver o modelo de texto.",
- "sf_form_docu": "Este é o formulario \"$1\".\nPara crear unha páxina con este formulario, introduza o nome da páxina a continuación;\nse xa existe unha páxina con ese nome enviaráselle a un formulario para editar esa páxina.",
- "sf_form_freetextlabel": "Texto libre",
- "sf_category_hasdefaultform": "Esta categoría usa o formulario $1.",
- "sf_category_desc": "Esta é a categoría $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Ver a lapela \"{{int:edit}}\" nas páxinas editables mediante formulario",
- "right-editrestrictedfields": "Editar os campos restrinxidos dos formularios",
- "right-createclass": "Crear novas clases semánticas",
- "action-createclass": "crear novas clases semánticas",
- "action-editrestrictedfields": "editar os campos restrinxidos dos formularios",
- "action-viewedittab": "ver a lapela \"{{int:edit}}\" nas páxinas editables mediante formulario"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/gom-latn.json b/SemanticForms/i18n/gom-latn.json
deleted file mode 100644
index 6577ef64..00000000
--- a/SemanticForms/i18n/gom-latn.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "The Discoverer"
- ]
- },
- "sf_editsource": "Mull sudar"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/gom.json b/SemanticForms/i18n/gom.json
deleted file mode 100644
index 6577ef64..00000000
--- a/SemanticForms/i18n/gom.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "The Discoverer"
- ]
- },
- "sf_editsource": "Mull sudar"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/got.json b/SemanticForms/i18n/got.json
deleted file mode 100644
index 3c562d00..00000000
--- a/SemanticForms/i18n/got.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Crazymadlover",
- "Jocke Pirat",
- "Omnipaedista"
- ]
- },
- "sf_createtemplate_deletefield": "Taíran"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/grc.json b/SemanticForms/i18n/grc.json
deleted file mode 100644
index 824f9c70..00000000
--- a/SemanticForms/i18n/grc.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Crazymadlover",
- "Omnipaedista"
- ]
- },
- "specialpages-group-sf_group": "Σημασιολογικοὶ Τύποι",
- "createproperty": "Ποιεῖν ἰδιότητα τινά",
- "sf_createproperty_propname": "Ὄνομα ἰδιότητος:",
- "sf_createproperty_proptype": "Τύπος:",
- "templates": "Πρότυπα",
- "sf_templates_definescat": "ὁρίζει κατηγορίαν: $1",
- "createtemplate": "Ποιεῖν πρότυπόν τι",
- "sf_createtemplate_namelabel": "Ὄνομα προτύπου:",
- "sf_createtemplate_fieldname": "Ὄνομα πεδίου:",
- "sf_createtemplate_addfield": "Προστιθέναι πεδίον",
- "sf_createtemplate_deletefield": "Σβεννύναι",
- "forms": "Τύποι",
- "sf_forminputs_mandatory": "Ὑποχρεωτικόν",
- "createform": "Ποιεῖν τύπον τινά",
- "sf_createform_template": "Πρότυπον:",
- "sf_createform_field": "Πεδίον:",
- "sf_createform_inputtypedefault": "(προκαθωρισμένη)",
- "sf_createform_hidden": "Κεκρυμμένη",
- "sf_createform_add": "Προστιθέναι",
- "sf_createcategory_name": "Ὄνομα κατηγορίας:",
- "sf_formstart_createoredit": "Ποιεῖν ἢ μεταγράφειν",
- "sf_formedit_createtitle": "Ποιεῖν $1: $2",
- "sf_viewform": "Ὁρᾶν τύπον",
- "sf_editsource": "Μεταγράφειν πηγήν",
- "sf_formedit_edittitle": "Μεταγράφειν $1: $2",
- "sf_formedit_remove": "Άφαιρεῖν",
- "sf_formedit_none": "Οὐδέν",
- "runquery": "Ἐκτελεῖν πεῦσιν",
- "sf_runquery_title": "Ἐκτελεῖν πεῦσιν: $1",
- "uploadwindow": "Ἐπιφορτίζειν θυρίδα",
- "sf_form_freetextlabel": "Ἐλεύθερον κείμενον",
- "sf_blank_namespace": "Κύριον"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/gsw.json b/SemanticForms/i18n/gsw.json
deleted file mode 100644
index 28c77d16..00000000
--- a/SemanticForms/i18n/gsw.json
+++ /dev/null
@@ -1,125 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Als-Chlämens",
- "Als-Holder"
- ]
- },
- "semanticforms-desc": "Formular fir s Yyfiege un Bearbeite vu semantische Date",
- "specialpages-group-sf_group": "Semantischi Formular",
- "createproperty": "E Attribut aalege",
- "sf_createproperty_linktoform": "Die Eigeschaft verwyyst uff Syte, wu des Format bruuche:",
- "sf_createproperty_allowedvalsinput": "Wänn Du fir des Fäld nume bstimmti Wärt witt megli mache, gib die bitte as kommatrännti Lischt yy (wänn s in eme Wärt e Komma het, ersetz des mit „\\,“):",
- "sf_createproperty_propname": "Eigeschaftsname:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Vorlage",
- "sf_templates_docu": "Die Vorlage git s uf {{SITENAME}}.",
- "sf_templates_definescat": "definiert Kategorii: $1",
- "createtemplate": "E Vorlag aalege",
- "sf_createtemplate_namelabel": "Vorlagename:",
- "sf_createtemplate_categorylabel": "Dur Vorlag definierti Kategorii (optional):",
- "sf_createtemplate_templatefields": "Vorlagefälder",
- "sf_createtemplate_fieldsdesc": "Wänn e Fäld vum ere Vorlag kei Feldname meh bruucht, gib eifach statt eme ächte Name d Indexnummere vum Fäld as Name yy (z. B. 1, 2, 3 usw.).",
- "sf_createtemplate_fieldname": "Fäldname:",
- "sf_createtemplate_displaylabel": "Fäldname aazeige:",
- "sf_createtemplate_semanticproperty": "Semantisch Attribut:",
- "sf_createtemplate_fieldislist": "In däm Fäld cha s e Lischt vu Wärt haa, wu dur Komma trännt wäre.",
- "sf_createtemplate_aggregation": "Zämmefassig",
- "sf_createtemplate_aggregationdesc": "Zum uf allene Syte, wu die Vorlag bruuche, alli Syte ufzlischte, wu ne bstimmt Attribut hän un uf die Syte verwyyse, gib s gwinscht Attribut do aa:",
- "sf_createtemplate_aggregationlabel": "Titel fir Lischt:",
- "sf_createtemplate_outputformat": "Uusgabformat:",
- "sf_createtemplate_standardformat": "Standard",
- "sf_createtemplate_infoboxformat": "Infobox uf dr rächte Syte",
- "sf_createtemplate_addfield": "Fieg Fäld yy",
- "sf_createtemplate_deletefield": "Lesche",
- "forms": "Formular",
- "sf_forms_docu": "Die Formular git s in {{SITENAME}}:",
- "sf_forminputs_mandatory": "Pflichtfäld",
- "sf_forminputs_restricted": "Nume Ammanne chenne des Yygabefäld ändere",
- "sf_forminputs_class": "S HTML-Attribut „class“ für sell Yygabefäld",
- "sf_forminputs_default": "De Standardwärt für des Yygabefäld",
- "sf_forminputs_preload": "E Wiki-Syte, wo de Inhalt devo de Standardwärt vo däm Yygabefäld wird",
- "sf_forminputs_property": "E semantischs Attribut, wo des Yygabefäld entspricht",
- "sf_forminputs_size": "D Grössi vo däm Teggstfäld in Zeiche",
- "sf_forminputs_maxlength": "Di maximali Längi vo däm Teggst in däm Yygabefäld, wo zuelässig isch",
- "sf_forminputs_placeholder": "De Hilfeteggst, wo aazeigt wird, bis dass de Benutzer druff klickt",
- "sf_forminputs_uploadable": "En Link zum Uffelade vunere Datei näbe däm Yygabefäld platziere",
- "sf_forminputs_defaultfilename": "De Standarddateiname für Dateie, wommer uffeglade het",
- "sf_forminputs_rows": "D Zyylezaal für des Yygabefäld",
- "sf_forminputs_cols": "D Spaltezaal für des Yygabefäld",
- "createform": "Leg e Formular aa",
- "sf_createform_nameinput": "Formularname",
- "sf_createform_nameinputdesc": "(no dr Konvention wird e Formular no dr Hauptvorlag gnännt, wu s fillt):",
- "sf_createform_template": "Vorlag:",
- "sf_createform_templatelabelinput": "Vorlagename (optional):",
- "sf_createform_allowmultiple": "Erlaub mehreri (oder null) Instanze vu däre Vorlag in dr aagleite Syte",
- "sf_createform_field": "Fäld:",
- "sf_createform_fieldprop": "Des Fäld definiert s Attribut $1 vum Typ $2.",
- "sf_createform_fieldproplist": "Des Fäld definiert e Lischt vu Elemänt, wu s Attribut $1 vum Typ $2 hän.",
- "sf_createform_fieldpropunknowntype": "Des Fäld definiert d Eigeschaft $1 mit eme nit spezifizierte Typ.",
- "sf_createform_inputtype": "Gib dr Typ yy:",
- "sf_createform_inputtypedefault": "(Standardwärt)",
- "sf_createform_formlabel": "Formularname:",
- "sf_createform_hidden": "Versteckt",
- "sf_createform_removetemplate": "Vorlag useneh",
- "sf_createform_addtemplate": "Vorlag zuefiege:",
- "sf_createform_atend": "Am Änd",
- "sf_createform_add": "Zuefiege",
- "sf_createform_choosefield": "Wehl e Fäld uus, wu Du iwtt zuefiege",
- "sf_createform_before": "Vor Vorlag:",
- "sf_createform_additembeforesave": "Du muesch zmindescht ei Vorlag zue däm Formular zuefiege, voreb Du s cha spychere.",
- "createcategory": "E Kategorii aalege",
- "sf_createcategory_name": "Kategoriename:",
- "sf_createcategory_defaultform": "Standardformular:",
- "sf_createcategory_makesubcategory": "Mach die Kategorii zuen ere Subkategorii vun ere andere Kategorii (optional):",
- "createclass": "E Klasse aalege",
- "sf_createclass_docu": "Gib do alli Date yy go d Eigeschafte, e Vorlag, e Formular un e Kategorii fir e einzelni Klasse aalege. Fir meh Megligkeite verwänd stattdem d Syte $1.",
- "sf_createclass_allowedvalues": "Erlaubti Wärt",
- "sf_createclass_listofvalues": "Lischt vu Wärt",
- "sf_createclass_missingvalues": "S sin nonig alli erforderlige Fälder uusgfillt.",
- "sf_createclass_success": "Eigeschafte, Vorlag, Formular und Kategorii wäre aagleit.",
- "formstart": "Syte mit Formular zuefiege",
- "sf_formstart_badform": "Fähler: s isch kei Syte gfunde wore bi $1",
- "sf_formstart_badtitle": "Fähler: '$1' isch kei giltige Titel fir e Syte.",
- "sf_formstart_docu": "Gib in des Täxtfäld dr Name vu dr Syte yy, wu mit em Formular „$1“ soll bearbeitet wäre. Wänn s scho ne Syte mit däm Name het, wirsch zuen eme Formular wytergleitet, wu Du die Syte chasch mit bearbeite. Suscht wirsch zuen eme Formular wytergleitet, wu Du die Syte chasch mit aalege.",
- "sf_formstart_noform_docu": "Gib in des Täxtfäld dr Name vu dr Syte yy un wehl s Formular, wu d Syte mit soll bearbeitet wäre. Wänn s scho ne Syte mit däm Name het, wirsch zuen eme Formular wytergleitet, wu Du die Syte chasch mit bearbeite. Suscht wirsch zuen eme Formular wytergleitet, wu Du die Syte chasch mit aalege.",
- "sf_formstart_createoredit": "Aalege oder Bearbeite",
- "formedit": "mit Formular bearbeite",
- "sf_formedit_createtitle": "Leg $1: $2 aa",
- "sf_formedit_badurl": "Des isch d Syte zum Bearbeite mit eme Formular. Du muesch dr Name vun eme Formulars un d Ziilsyte, wu soll bearbeitet wäre, in dr URL aagee. S sott uussäh wie „Special:FormEdit?form=<Formularname>&target=<Ziilsyte>“ oder „Special:FormEdit/<Formularname>/<Ziilsyte>“.",
- "sf_formedit_altforms": "Du chasch die Syte au mit eim vu däne Formular aalege:",
- "sf_formedit_altformsonly": "Bitte wehl eis vu däne Formular uus go die Syte aalege:",
- "sf_formcreate": "Mit Formular aalege",
- "sf_viewform": "Formular aazeige",
- "sf_editsource": "Quälltäxt bearbeite",
- "sf_formedit_edittitle": "Bearbeit $1: $2",
- "sf_formedit_morethanoneform": "Warnig: s isch meh wie ei Standardformular definiert fir die Syte.",
- "sf_formedit_formwarning": "Warnig: Die Syte <a href=\"$1\">git s scho</a>, aber si bruucht nit des Formular.",
- "sf_formedit_remove": "Useneh",
- "sf_formedit_addanother": "Wyteri zuefiege",
- "sf_formedit_none": "Keini",
- "runquery": "Abfrog starte",
- "sf_runquery_badurl": "Du muesch e Formularname aagee in dr URL;\nd URL sott eso ussäh 'Special:RunQuery/<Formularname>'.",
- "sf_runquery_title": "Abfrog starte: $1",
- "sf_runquery_additionalquery": "Zuesätzligi Abfrog",
- "sf_formerrors_header": "Dyy Yygab isch fählerhaft; fir meh lueg unte",
- "sf_blank_error": "derf nit läär syy",
- "sf_bad_url_error": "muess s richtig URL-Format haa, wu aafangt mit „http://“",
- "sf_bad_email_error": "muess e giltig E-Mail-Adrässformat haa",
- "sf_bad_number_error": "muess e giltigi Zahl syy",
- "sf_bad_date_error": "muess e giltig Datum syy",
- "uploadwindow": "Fänschter zum Uffelade",
- "sf_deletionlog": "Leschlogbuech",
- "sf_property_isproperty": "Des isch e Eigeschaft vum Typ $1.",
- "sf_property_linkstoform": "Verwyyst uff Syte, wu s Format $1 bruuche.",
- "sf_property_allowedvals": "{{PLURAL:$1|Dr erlaubt Wärt fir die Eigeschaft isch|Di erlaubte Wärt fir die Eigeschaft sin}}:",
- "sf_template_docu": "Des isch d Vorlag fir „$1“. Si sott in däm Format ufgruefe wäre:",
- "sf_template_docufooter": "Die Syte bearbeite go dr Vorlagetäxt säh.",
- "sf_form_docu": "Des isch s „$1“-Formular.\nGo ne Syte aalege mit däm Formular, gib dr Sytename unte yy.\nWänn s scho ne Syte mit däm Name het, wirsch zuen eme Formular wytergleitet, wu Du die Syte chasch aalege mit.",
- "sf_form_freetextlabel": "Frejtäxt",
- "sf_category_hasdefaultform": "Die Kategorii bruucht s Formular $1.",
- "sf_category_desc": "Des isch d Kategorii $1.",
- "sf_blank_namespace": "Hauptsyte",
- "right-viewedittab": "D \"Bearbeite\"-Regischtercharte fir bearbeitbari Syte no Format aaluege",
- "right-editrestrictedfields": "Yygschränkti Formatfälde bearbeite"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/gu.json b/SemanticForms/i18n/gu.json
deleted file mode 100644
index 7d3fb028..00000000
--- a/SemanticForms/i18n/gu.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ashok modhvadia",
- "Dsvyas",
- "KartikMistry"
- ]
- },
- "sf_forminputs_mandatory": "ફરજિયાત",
- "sf_forminputs_restricted": "ફક્ત પ્રબંધકો જ ફેરફાર કરી શકે છે",
- "sf_createform_hidden": "છુપાયેલ",
- "sf_createform_removetemplate": "ઢાંચો દૂર કરો",
- "sf_createform_addtemplate": "ઢાંચો ઉમેરો:",
- "sf_createform_atend": "અંતમાં",
- "sf_createform_add": "ઉમેરો",
- "sf_createform_before": "પહેલા:",
- "createcategory": "શ્રેણીની રચના કરો",
- "sf_createcategory_name": "શ્રેણી નામ:",
- "sf_createcategory_makesubcategory": "આને અન્ય શ્રેણીની ઉપશ્રેણી બનાવો (વૈકલ્પિક):",
- "formstart": "ફોર્મ વાળું પાનું ઉમેરો",
- "sf_blank_namespace": "મુખ્ય"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/gv.json b/SemanticForms/i18n/gv.json
deleted file mode 100644
index cf3a6217..00000000
--- a/SemanticForms/i18n/gv.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "MacTire02",
- "Shimmin Beg"
- ]
- },
- "sf_createproperty_propname": "Ennym tro:",
- "sf_createtemplate_deletefield": "Scryss",
- "sf_createform_sectionname": "Ennym y rheynn",
- "createcategory": "Croo ronney",
- "sf_createcategory_name": "Ennym ronney:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ha.json b/SemanticForms/i18n/ha.json
deleted file mode 100644
index b08daa46..00000000
--- a/SemanticForms/i18n/ha.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "@metadata": {
- "authors": []
- },
- "sf_createtemplate_deletefield": "Soke"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hak.json b/SemanticForms/i18n/hak.json
deleted file mode 100644
index c7f39ff6..00000000
--- a/SemanticForms/i18n/hak.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Hakka"
- ]
- },
- "sf_createtemplate_deletefield": "Chhù-thet"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/haw.json b/SemanticForms/i18n/haw.json
deleted file mode 100644
index d91049eb..00000000
--- a/SemanticForms/i18n/haw.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Kalani",
- "Singularity"
- ]
- },
- "sf_createproperty_propname": "Inoa:",
- "sf_createform_inputtypedefault": "(paʻamau)",
- "sf_createform_add": "Ho‘ohui",
- "sf_createcategory_name": "Inoa:",
- "sf_formedit_remove": "Kāpae"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/he.json b/SemanticForms/i18n/he.json
deleted file mode 100644
index 0460dff1..00000000
--- a/SemanticForms/i18n/he.json
+++ /dev/null
@@ -1,176 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Amire80",
- "Inkbug",
- "Rotemliss",
- "Yaron Koren",
- "YaronSh",
- "חיים"
- ]
- },
- "semanticforms-desc": "טפסים להוספת ולעריכת נתונים סמנטיים",
- "specialpages-group-sf_group": "טפסים סמנטיים",
- "createproperty": "יצירת מאפיין",
- "sf_createproperty_linktoform": "מאפיין זה יקשר לדפים המשתמשים בטופס:",
- "sf_createproperty_allowedvalsinput": "אם ברצונכם שלמאפיין זה יהיו רק כמה ערכים מורשים, הזינו את רשימת הערכים המורשים, מופרדים בפסיקים (אם ערך כלשהו מכיל פסיק, החליפו אותו ב־\"\\,\"):",
- "sf_createproperty_propname": "שם המאפיין:",
- "sf_createproperty_proptype": "סוג:",
- "templates": "תבניות",
- "sf_templates_docu": "התבניות הבאות קיימות בוויקי הזה.",
- "sf_templates_definescat": "מגדיר את הקטגוריה: $1",
- "createtemplate": "צור תבנית",
- "sf_createtemplate_namelabel": "שם התבנית:",
- "sf_createtemplate_categorylabel": "קטגוריה מוגדרת על ידי תבנית ():",
- "sf_createtemplate_templatefields": "שדות התבנית",
- "sf_createtemplate_fieldsdesc": "כדי ששדות התבנית לא יצטרכו שמות, פשוט הכנס את האינדקס של השדה (1, 2, 3...) במקום שם אמיתי.",
- "sf_createtemplate_fieldname": "שם השדה:",
- "sf_createtemplate_displaylabel": "תוית תצוגה:",
- "sf_createtemplate_semanticproperty": "זה השדה הסמנטי:",
- "sf_createtemplate_fieldislist": "השדה יכול להכיל רשימת ערכים, המופרדים בפסיקים",
- "sf_createtemplate_aggregation": "מצבור",
- "sf_createtemplate_aggregationdesc": "כדי להציג בכל דף המשתמש בתבנית זו את כל הדפים המכילים מאפיין מסוים המצביע לדף זה, ציינו את המאפיין המתאים להלן:",
- "sf_createtemplate_aggregationlabel": "כותרת לרשימה:",
- "sf_createtemplate_outputformat": "מבנה הפלט:",
- "sf_createtemplate_standardformat": "טבלה",
- "sf_createtemplate_infoboxformat": "כיוון תיבת מידע",
- "sf_createtemplate_addfield": "הוספת שדה",
- "sf_createtemplate_deletefield": "מחיקה",
- "forms": "טפסים",
- "sf_forms_docu": "הטפסים הבאים קיימים בוויקי הזה.",
- "sf_forminputs_mandatory": "הכרחי",
- "sf_forminputs_restricted": "רק מפעילי מערכת יכולים לערוך את הקלט הזה",
- "sf_forminputs_class": "מאפיין class של HTML עבור הקלט הזה",
- "sf_forminputs_default": "ערך בררת מחדל עבור הקלט הזה",
- "sf_forminputs_preload": "דף ויקי שתוכנו יהיה ערך בררת המחדל עבור הקלט הזה",
- "sf_forminputs_property": "מאפיין סמנטי שהשדה הזה מתאים לו",
- "sf_forminputs_size": "גודל שדה הטקסט הזה, בתווים",
- "sf_forminputs_maxlength": "האורך המרבי של הטקסט בשדה הזה",
- "sf_forminputs_placeholder": "טקסט עזרה שמופיע בשדה קלט עד שהמשתמש לוחץ עליו",
- "sf_forminputs_uploadable": "לשים קישור \"העלאת קובץ\" ליד הקלט הזה",
- "sf_forminputs_defaultfilename": "שם קובץ לפי בררת מחדל לקבצים מוּעלים",
- "sf_forminputs_rows": "מספר השורות עבור הקלט הזה",
- "sf_forminputs_cols": "מספר העמודות עבור הקלט הזה",
- "sf_forminputs_autogrow": "להגדיר שהקלט הזה יגדל אם הטקסט יֵצא מהגבולות שלו",
- "sf_forminputs_valuesfromproperty": "מאפיין שהערכים שלו בוויקי צריכים להיות קבוצת הערכים של הקלט הזה",
- "sf_forminputs_valuesfromcategory": "קטגוריה שהדפים שבה צריכים להיות קבוצת הערכים של הקלט הזה",
- "sf_forminputs_valuesfromnamespace": "מרחב שם שהדפים שבו צריכים להיות קבוצת הערכים של הקלט הזה",
- "sf_forminputs_valuesfromconcept": "\"מושג\" של מדיה־ויקי סמנטית שהדפים שבו צריכים להיות קבוצת הערכים של הקלט הזה",
- "sf_forminputs_valuesfromurl": "כתובת שמחזיקה נתונים המובנים שצריכים להיות קבוצת הערכים של הקלט הזה",
- "sf_forminputs_values": "קבוצת הערכים לקלט הזה, מופרדים בפסיקים",
- "sf_forminputs_list": "לסמן את הקלט הזה כמחזיק רשימת ערכים",
- "sf_forminputs_delimiter": "המפריד בין ערכי השדה, אם השדה הזה מחזיק רשימה של כאלה",
- "sf_forminputs_remoteautocompletion": "להשתמש בהשלמה אוטומטית מרוחקת",
- "sf_forminputs_existingvaluesonly": "לאפשר רק ערכים שכבר נמצאים ברשימה",
- "sf_forminputs_showonselect": "מרכיבי דף שיוצגו רק אם ערכים מסוימים נבחרו (למשל: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "גובה תיבת הרשימה הזאת, בשורות",
- "sf_forminputs_includetimezone": "לכלול קלט עבור אותו אזור זמן",
- "sf_forminputs_topcategory": "הקטגוריה האם של קבוצת הקטגוריות האלו (נדרש)",
- "sf_forminputs_hideroot": "להסתיר את הקטגוריה",
- "sf_forminputs_depth": "מספר רמות הקטגוריות שיוצג תחילה",
- "sf_forminputs_height": "גובה הקלט הזה, בפיקסלים",
- "sf_forminputs_width": "רוחב הקלט הזה, בפיקסלים",
- "createform": "יצירת טופס",
- "sf_createform_nameinput": "שם הטופס",
- "sf_createform_nameinputdesc": "(מקובל לתת לטופס שם בהתאם לשם התבנית העיקרית שהוא מגדיר):",
- "sf_createform_template": "תבנית:",
- "sf_createform_templatelabelinput": "תוית לתבנית (אופציונלי):",
- "sf_createform_allowmultiple": " הרשה כפילויות (או אפס) מהתבנית הזאת בדף המיוצר",
- "sf_createform_field": "שדה:",
- "sf_createform_fieldprop": "שדה זה מגדיר את המאפיין $1, מסוג $2.",
- "sf_createform_fieldproplist": "שדה זה מגדיר את רשימת הרכיבים שיש להם את המאפיין $1, מסוג $2.",
- "sf_createform_fieldpropunknowntype": "שדה זה מגדיר את המאפיין $1, מסוג לא מוגדר.",
- "sf_createform_inputtype": "סוג הקלט:",
- "sf_createform_inputtypedefault": "(ברירת מחדל)",
- "sf_createform_formlabel": "תוית בטופס:",
- "sf_createform_hidden": "מוסתר",
- "sf_createform_removetemplate": "הסרת תבנית",
- "sf_createform_addtemplate": "הוספת תבנית:",
- "sf_createform_atend": "בסוף",
- "sf_createform_add": "הוספה",
- "sf_createform_choosefield": "בחרו שדה להוספה",
- "sf_createform_before": "לפני התבנית:",
- "sf_createform_additembeforesave": "עליכם להוסיף לפחות תבנית אחת לטופס זה לפני שתוכלו לשמור אותו.",
- "createcategory": "יצירת קטגוריה",
- "sf_createcategory_name": "שם הקטגוריה:",
- "sf_createcategory_defaultform": "טופס ברירת המחדל:",
- "sf_createcategory_makesubcategory": "הפיכת קטגוריה זו לקטגוריית משנה של קטגוריה אחרת (אופציונלי):",
- "createclass": "יצירת מחלקה",
- "sf_createclass_docu": "כתבו כאן את כל המידע ליצירת המאפיינים, התבנית, הטופס והקטגוריה עבור מחלקה בודדת. לאפשרויות נוספות, השתמשו בדפים $1 במקום זאת.",
- "sf_createclass_allowedvalues": "ערכים מורשים:",
- "sf_createclass_listofvalues": "רשימת ערכים?",
- "sf_createclass_nameinput": "שם הטופס:",
- "sf_createclass_missingvalues": "לא כל השדות הנדרשים מולאו.",
- "sf_createclass_success": "יווצרו מאפיינים, תבנית, טופס וקטגוריה.",
- "sf_createclass_create": "יצירה",
- "formstart": "הוספת דף עם טופס",
- "sf_formstart_badform": "שגיאה: לא נמצא דף טופס ב־$1",
- "sf_formstart_badtitle": "שגיאה: \"$1\" היא כותרת דף בלתי תקינה.",
- "sf_formstart_docu": "כתבו כאן את שם הדף, שייערך באמצעות הטופס '$1'.\nאם דף זה כבר קיים, תועברו אל הטופס לעריכת אותו הדף.\nאחרת, תועברו אל הטופס להוספת הדף.",
- "sf_formstart_noform_docu": "כתבו כאן את שם הדף, ובחרו את הטופס באמצעותו תבוצע עריכת הדף.\nאם דף זה כבר קיים, תועברו אל הטופס לעריכת אותו הדף.\nאחרת, תועברו אל הטופס להוספת הדף.",
- "sf_formstart_createoredit": "יצירה או עריכה",
- "formedit": "עריכה באמצעות טופס",
- "sf_formedit_createtitle": "יצירת $1: $2",
- "sf_formedit_createtitlenotarget": "ליצור את $1",
- "sf_formedit_badurl": "דף זה משמש לעריכה באמצעות טופס. עליך לפרט גם את שם הטופס וגם את כתובת דף היעד; התוצאה אמורה להיראות כך: 'Special:FormEdit?form=<form name>&target=<target page>', או כך - 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "במקום זאת תוכלו להוסיף דף זה באמצעות אחד מהטפסים הבאים:",
- "sf_formedit_altformsonly": "אנא בחרו מאחד הטפסים הבאים להוספת דף זה:",
- "sf_formcreate": "יצירה עם טופס",
- "sf_viewform": "הצגת הטופס",
- "sf_editsource": "עריכת מקור",
- "sf_formedit_edittitle": "עריכת $1: $2",
- "sf_formedit_morethanoneform": "'''אזהרה:''' יותר מטופס ברירת מחדל אחד מוגדר לדף זה.",
- "sf_formedit_formwarning": "אזהרה: דף זה <a href=\"$1\">כבר קיים</a>, אך אינו משתמש בטופס זה.",
- "sf_formedit_mismatchedbrackets": "אזהרה: הדף הזה מכיל סוגריים מרובעים או מסולסלים שאינם סגורים כהלכה, אז הטופס לא יטפל נכון בדף. נא <a href=\"$1\">לתקן את השגיאה בקוד המקור</a> לפני המשך.",
- "sf_formedit_remove": "הסרה",
- "sf_formedit_addanother": "הוספת עוד",
- "sf_formedit_none": "לא כלום",
- "sf_formedit_emptytitle": "שגיאה: המידע שהוכנס מייצר כותרת דף ריקה.",
- "sf_formedit_hookerror": "שגיאה: הרחבת מדיה־ויקי מעה את השינוי של דף היעד.",
- "sf_formedit_saveandcontinueediting": "לשמור ולהמשיך",
- "sf_formedit_saveandcontinue_summary": "נשמר באמצעות כפתור \"$1\" בטופס",
- "sf_formedit_tooltip_saveandcontinueediting": "לשמור את הנתונים והמשיך לערוך",
- "sf_autoedit_anoneditwarning": "אזהרה: לא נכנסתם לחשבון. כתובת ה־IP שלכם תירשם בהיסטוריית הדף הזה.",
- "sf_autoedit_success": "[[$1]] שוּנה בהצלחה באמצעות הטופס $2.",
- "sf_autoedit_notargetspecified": "לא צוין דף יעד.",
- "sf_autoedit_noformfound": "לא צוין טופס.",
- "sf_autoedit_toomanyformsfound": "יש יותר מטופס אחד לדף.",
- "sf_autoedit_readonly": "מסד הנתונים נעול לשינויים. סיבה: $1",
- "sf_autoedit_nosemanticform": "לא הצליחה קבלת טופס $2 עבור דף $1. ר׳ [[{{#special:FormEdit}}/$2/$1]] לפרטים.",
- "sf_autoedit_summary": "נערך אוטומטית מהדף $1.",
- "sf-autoedit-wait": "נא להמתין...",
- "runquery": "הרצת שאילתה",
- "sf_runquery_badurl": "יש לציין את שם הטופס בכתובת;\nעל הכתובת להיות מהצורה 'Special:RunQuery/<שם הטופס>'.",
- "sf_runquery_title": "הרצת שאילתה: $1",
- "sf_runquery_additionalquery": "שאילתה נוספת",
- "sf_formerrors_header": "אירעו שגיאות בקלט הטופס שלכם; עיינו להלן",
- "sf_blank_error": "אין להותיר ריק",
- "sf_bad_url_error": "עליו להיות במבנה כתובת תקין, המתחיל ב־'http'",
- "sf_bad_email_error": "עליו להיות במבנה תקין של כתובת דוא\"ל",
- "sf_bad_number_error": "עליו להיות מספר תקין",
- "sf_bad_date_error": "עליו להיות תאריך תקין",
- "uploadwindow": "חלון ההעלאה",
- "sf_deletionlog": "יומן מחיקות",
- "sf-preview-header": "תצוגה מקדימה טופס",
- "sf-preview-note": "כך ייראה הטופס כשהוא יהיה בשימוש:",
- "sf-pageschemas-pagenameformula": "נוסחה לשם הדף:",
- "sf-pageschemas-createtitle": "כותרת הטופס לדפים חדשים:",
- "sf-pageschemas-edittitle": "כותרת הטופס לדפים קיימים:",
- "sf-pageschemas-inputtype": "סוג שדה הקלט (השאירו ריק לערך בררת מחדל):",
- "sf_property_isproperty": "זהו מאפיין מסוג $1.",
- "sf_property_linkstoform": "מקשר לדפים המשתמשים בטופס $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|הערך האפשרי למאפיין זה הוא|הערכים האפשריים למאפיין זה הם}}:",
- "sf_template_docu": "זוהי התבנית '$1'.\nשמה צריך להיות במבנה הבא:",
- "sf_template_docufooter": "ערכו את הדף כדי לצפות בטקסט התבנית.",
- "sf_form_docu": "זהו הטופס '$1'.\nעל מנת ליצור דף עם טופס זה, יש לכתוב את שם הדף להלן;\nאם דף בשם זה כבר קיים, תועברו אל טופס לעריכת הדף.",
- "sf_form_freetextlabel": "טקסט חופשי",
- "sf_category_hasdefaultform": "קטגוריה זו משתמשת בטופס $1.",
- "sf_category_desc": "זוהי הקטגוריה $1.",
- "sf_blank_namespace": "ראשי",
- "right-viewedittab": "צפייה בלשונית \"עריכה\" של דפים הניתנים לעריכה על ידי טופס",
- "right-editrestrictedfields": "עריכת שדות טופס מוגבלים",
- "right-createclass": "יצירת מחלקות סמנטיות חדשות",
- "action-createclass": "ליצור מחלקות סמנטיות חדשות",
- "action-editrestrictedfields": "לערוך שדות טופס מוגבלים",
- "action-viewedittab": "להציג את הלשונית \"עריכה\" לטפסים שאפשר לערוך"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hi.json b/SemanticForms/i18n/hi.json
deleted file mode 100644
index d16dab77..00000000
--- a/SemanticForms/i18n/hi.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Kaustubh",
- "Siddhartha Ghai"
- ]
- },
- "createproperty": "एक गुणधर्म बनायें",
- "sf_createproperty_propname": "नाम:",
- "sf_createproperty_proptype": "प्रकार:",
- "templates": "साँचे",
- "sf_templates_definescat": "श्रेणीकी व्याख्या: $1",
- "createtemplate": "साँचा बनायें",
- "sf_createtemplate_namelabel": "साँचा का नाम:",
- "sf_createtemplate_templatefields": "साँचा के फ़िल्ड",
- "sf_createtemplate_fieldname": "फ़िल्ड नाम:",
- "sf_createtemplate_displaylabel": "दर्शाने का लेबल:",
- "sf_createtemplate_semanticproperty": "सिमँटिक गुणधर्म:",
- "sf_createtemplate_aggregation": "एग्रिगेशन",
- "sf_createtemplate_aggregationlabel": "सूची शीर्षक:",
- "sf_createtemplate_outputformat": "आउटपुट रूपरेखा:",
- "sf_createtemplate_standardformat": "स्टँडर्ड",
- "sf_createtemplate_infoboxformat": "दाईं ओर ज्ञानसन्दूक",
- "sf_createtemplate_addfield": "फ़िल्ड बढायें",
- "sf_createtemplate_deletefield": "हटायें",
- "forms": "फ़ार्म",
- "sf_forminputs_mandatory": "अत्यावश्यक",
- "sf_forminputs_restricted": "प्रतिबंधित (सिर्फ प्रबंधक बदल सकतें हैं)",
- "createform": "फ़ार्म बनायें",
- "sf_createform_template": "साँचा:",
- "sf_createform_templatelabelinput": "साँचा लेबल (वैकल्पिक):",
- "sf_createform_field": "फ़ील्ड:",
- "sf_createform_inputtype": "इनपुट प्रकार:",
- "sf_createform_inputtypedefault": "(डिफॉल्ट)",
- "sf_createform_formlabel": "फ़ार्म लेबल:",
- "sf_createform_hidden": "छुपाई हुई",
- "sf_createform_removetemplate": "साँचा हटायें",
- "sf_createform_addtemplate": "साँचा बढायें:",
- "sf_createform_atend": "आखिरमें",
- "sf_createform_add": "बढायें",
- "sf_createform_choosefield": "बढाने के लिये फ़िल्ड चुनें",
- "sf_createform_before": "साँचे के पहले:",
- "createcategory": "श्रेणी बनायें",
- "sf_createcategory_name": "नाम:",
- "sf_createcategory_defaultform": "डिफ़ाल्ट फ़ार्म:",
- "formstart": "पन्ना बढायें",
- "sf_formstart_createoredit": "बढायें या बदलें",
- "formedit": "फ़ार्म के साथ बदलें",
- "sf_formedit_createtitle": "बढायें $1: $2",
- "sf_editsource": "स्रोत बदलें",
- "sf_formedit_edittitle": "बदलें $1: $2",
- "sf_formedit_remove": "हटायें",
- "sf_formedit_addanother": "दूसरा बढायें",
- "sf_formedit_none": "बिल्कुल नहीं",
- "sf_blank_error": "खाली नहीं हो सकता",
- "sf_bad_number_error": "एक वैध संख्या होना आवश्यक हैं",
- "sf_bad_date_error": "एक वैध तारीख होना आवश्यक हैं",
- "sf_property_isproperty": "यह $1 प्रकार का गुणधर्म हैं।",
- "sf_form_freetextlabel": "मुक्त पाठ",
- "sf_category_hasdefaultform": "यह श्रेणी फ़ार्म $1 का इस्तेमाल करती हैं।",
- "sf_category_desc": "यह $1 श्रेणी हैं।",
- "sf_blank_namespace": "मुख्य"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hil.json b/SemanticForms/i18n/hil.json
deleted file mode 100644
index 0506e2d7..00000000
--- a/SemanticForms/i18n/hil.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jose77"
- ]
- },
- "sf_createtemplate_deletefield": "Panason"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hr.json b/SemanticForms/i18n/hr.json
deleted file mode 100644
index 94aa9907..00000000
--- a/SemanticForms/i18n/hr.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Dalibor Bosits",
- "SpeedyGonsales"
- ]
- },
- "sf_createtemplate_deletefield": "Izbriši",
- "sf_formedit_remove": "Ukloni",
- "sf_form_docu": "Ovo je obrazac \"$1\".\nZa kreiranje stranica uporabom ovog obrasca, unesite ime stranice u polje ispod;\nako takva stranica već postoji, otvorit će Vam se obrazac za uređivanje te stranice."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hsb.json b/SemanticForms/i18n/hsb.json
deleted file mode 100644
index bba9b7fb..00000000
--- a/SemanticForms/i18n/hsb.json
+++ /dev/null
@@ -1,187 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Michawiki"
- ]
- },
- "semanticforms-desc": "Formulary za přidawanje a wobdźěłowanje semantiskich datow",
- "specialpages-group-sf_group": "Semantiske formulary",
- "createproperty": "Wutwor kajkosć",
- "sf-createproperty-with-name": "Kajkosć wutworić: $1",
- "sf_createproperty_linktoform": "Tuta kajkosć budźe k stronam wotkazować, kotrež formular wužiwaja:",
- "sf_createproperty_allowedvalsinput": "Jeli chceš, zo su jenož wěste hódnoty za tute kajkosć dowolene, zapodaj lisćinu dowolenych hódnotow, wotdźělenych přez komy (jeli hódnota komu wobsahuje, narunaj ju přez \"\\,\"):",
- "sf_createproperty_propname": "Mjeno kajkosće:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Předłohi",
- "sf_templates_docu": "Slědowace předłohi su we {{GRAMMAR:Lokatiw|{{SITENAME}}}}",
- "sf_templates_definescat": "definuje kategoriju: $1",
- "createtemplate": "Wutwor předłohu",
- "sf-createtemplate-with-name": "Předłohu wutworić: $1",
- "sf_createtemplate_namelabel": "Mjeno předłohi:",
- "sf_createtemplate_multipleinstance": "Tuta předłoha da so wjackróć do strony zapřijeć.",
- "sf_createtemplate_connectingproperty": "Mjeno kajkosće, zo by pola tuteje předłohi ze zbytkom strony zwjazało:",
- "sf_createtemplate_categorylabel": "Kategorija definowana přez předłohu (opcionalny):",
- "sf_createtemplate_templatefields": "Pola předłohi",
- "sf_createtemplate_fieldsdesc": "Jeli pola w tutej předłoze hižo nimaja polowe mjena potrjebować, zapodaj prosće indeks kóždeho pola (na př. 1, 2, 3 atd.) jako mjeno město woprawdźiteho mjena.",
- "sf_createtemplate_fieldname": "Polowe mjeno:",
- "sf_createtemplate_displaylabel": "Polowe mjeno, kotrež ma so pokazać:",
- "sf_createtemplate_semanticproperty": "Semantiska kajkosć:",
- "sf_createtemplate_fieldislist": "Tute polo móže lisćinu hódnotow wobsahować, kotrež so přez komu wotdźěleja.",
- "sf_createtemplate_aggregation": "Agregacija",
- "sf_createtemplate_aggregationdesc": "Zo by na stronje, kotraž tutu předłohu wužiwa, wšě strony nalistował, kotrež wěstu kajkosć maja a na tu stronu wotkazuja, podaj tu wotpowědnu kajkosć:",
- "sf_createtemplate_aggregationlabel": "Titul za lisćinu:",
- "sf_createtemplate_outputformat": "Wudatny format:",
- "sf_createtemplate_standardformat": "Tabela",
- "sf_createtemplate_infoboxformat": "Bóčny infokašćik",
- "sf_createtemplate_plainformat": "Luty tekst",
- "sf_createtemplate_sectionsformat": "Wotrězki",
- "sf_createtemplate_addfield": "Polo přidać",
- "sf_createtemplate_deletefield": "Wušmórnyć",
- "forms": "Formulary",
- "sf_forms_docu": "Slědowace formulary eksistuja w {{GRAMMAR:Lokatiw|{{SITENAME}}}}",
- "sf_forminputs_mandatory": "Hódnota dyrbi so do tutoho zapodawanskeho pola zapodać",
- "sf_forminputs_restricted": "Jenož administratorojo móža tute zapodawanske polo wobdźěłać",
- "sf_forminputs_class": "HTML-atribut \"class\" za tute zapodawanske polo",
- "sf_forminputs_default": "Standardna hódnota za tute zapodawanske polo",
- "sf_forminputs_preload": "Wikistrona, kotrejež wobsah budźe standardna hódnota tutoho zapodawanskeho pola",
- "sf_forminputs_property": "Semantiski atribut, kotryž tutomu polu wotpowěduje",
- "sf_forminputs_size": "Wulkosć tutoho tekstoweho pola w znamješkach",
- "sf_forminputs_maxlength": "Maksimalna dowolena dołhosć teksta w tutym zapodawanskim polu",
- "sf_forminputs_placeholder": "Tekst pomocy, kotryž so jewi, doniž wužiwar na njón njekliknje",
- "sf_forminputs_uploadable": "Wotkaz ''{{int:upload}}'' pódla zapodawanskeho pola stajić",
- "sf_forminputs_defaultfilename": "Standardne datajowe mjeno za nahrate dataje",
- "sf_forminputs_rows": "Ličba rjadkow za tute zapodawanske polo",
- "sf_forminputs_cols": "Ličba špaltow za tute zapodawanske polo",
- "sf_forminputs_autogrow": "Awtomatiske změnjenje wulkosće zapodawanskeho pola, jeli tekst jeho mjezy přesaha",
- "sf_forminputs_valuesfromproperty": "Atribut, kotrehož hódnoty we wikiju maja hódnoty tutoho zapodawanskeho pola być",
- "sf_forminputs_valuesfromcategory": "Kategorija, kotrejež strony maja hódnoty tutoho zapodawanskeho pola być",
- "sf_forminputs_valuesfromnamespace": "Mjenowy rum, kotrehož strony maja hódnoty tutoho zapodawanskeho pola być",
- "sf_forminputs_valuesfromconcept": "\"Konceptowa\" strona Semantic MediaWiki, kotrychž strony měli sadźba hódnotow tutoho zapodawanskeho pola być",
- "sf_forminputs_valuesfromurl": "URL, kotryž strukturowane daty wobsahuje, kotrež měli sadźba hódnotow tutoho zapodawanskeho pola być",
- "sf_forminputs_values": "Hódnoty za tute zapodawanske polo, rozdźělene přez komy",
- "sf_forminputs_list": "Tute zapodawanske polo jako lisćinu hódnotow markiěrować",
- "sf_forminputs_delimiter": "Dźěłatko mjez pólnymi hódnotami, jeli tute zapodawanske polo ma lisćinu hódnotow",
- "sf_forminputs_remoteautocompletion": "Zdalene awtomatiske wudospołnjenje wužiwać",
- "sf_forminputs_existingvaluesonly": "Jenož hódnoty dowolić, kotrež su hižo w lisćinje",
- "sf_forminputs_showonselect": "Elementy strony, kotrež maja so jenož zwobraznić, jeli wěste hódnoty su wubrane (na přikład: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "Wysokosć tutoho lisćinoweho pola w rjadkach",
- "sf_forminputs_includetimezone": "Zapodawanske polo za časowe pasmo dodać",
- "sf_forminputs_topcategory": "Nadrjadowana kategorija tuteje sadźby kategorijow (trěbna)",
- "sf_forminputs_hideroot": "Nadrjadowanu kategoriju schować",
- "sf_forminputs_depth": "Ličba kategorijowych runinow, kotrež maja so na spočatku pokazać",
- "sf_forminputs_height": "Wysokosć tutoho zapodawanskeho pola w pikselach",
- "sf_forminputs_width": "Šěrokosć tutoho zapodawanskeho pola w pikselach",
- "createform": "Formular wutworić",
- "sf-createform-with-name": "Formular wutworić: $1",
- "sf_createform_nameinput": "Formularne mjeno",
- "sf_createform_nameinputdesc": "(formular dóstawa zwjetša samsne mjeno kaž jeho hłowna předłoha):",
- "sf_createform_template": "Předłoha:",
- "sf_createform_templatelabelinput": "Mjeno předłohi (opcionalny):",
- "sf_createform_allowmultiple": "Wjacore (abo žane) instancy tuteje předłohi we wutworjenej stronje dowolić",
- "sf_createform_field": "Polo:",
- "sf_createform_fieldprop": "Tute polo definuje kajkosć $1 typa $2.",
- "sf_createform_fieldproplist": "Tute polo definuje lisćinu elementow, kotrež maja kajkosć $1 typa $2.",
- "sf_createform_fieldpropunknowntype": "Tute polo definuje kajkosć $1 njepodateho typa.",
- "sf_createform_inputtype": "Zapodaj typ:",
- "sf_createform_inputtypedefault": "(Standard)",
- "sf_createform_formlabel": "Formularne mjeno:",
- "sf_createform_hidden": "Schowany",
- "sf_createform_removetemplate": "Předłohu wotstronić",
- "sf_createform_addtemplate": "Předłohu přidać:",
- "sf_createform_atend": "Na kóncu",
- "sf_createform_add": "Přidać",
- "sf_createform_choosefield": "Wubjer polo, kotrež chceš přidać",
- "sf_createform_before": "Před předłohu:",
- "sf_createform_additembeforesave": "Dyrbiš znajmjeńša jednu předłohu k tutomu formularej přidać, prjedy hač móžeš jón składować.",
- "createcategory": "Kategoriju wutworić",
- "sf-createcategory-with-name": "Kategoriju wutworić: $1",
- "sf_createcategory_name": "Mjeno kategorije:",
- "sf_createcategory_defaultform": "Standardny formular:",
- "sf_createcategory_makesubcategory": "Tutu kategoriju k podkategoriji druheje kategorije činić (opcionalny):",
- "createclass": "Klasu wutworić",
- "sf_createclass_docu": "Zapodajće tu wšě daty, zo by kajkosće, předłohu, formular a kategoriju za jednotliwu klasu wutworił.\nZa dalše opcije wužij strony $1 město toho.",
- "sf_createclass_allowedvalues": "Dowolene hódnoty:",
- "sf_createclass_listofvalues": "Lisćina hódnotow?",
- "sf_createclass_nameinput": "Mjeno formulra:",
- "sf_createclass_missingvalues": "Nic wšě trěbne pola su wupjelnjene.",
- "sf_createclass_success": "Kajkosće, předłoha, formular a kategorija budu so wutworjeć.",
- "sf_createclass_create": "Wutworić",
- "formstart": "Stronu z formularom přidać",
- "sf_formstart_badform": "Zmylk: Žadyn formular na stronje \"$1\" namakany.",
- "sf_formstart_badtitle": "Zmylk: \"$1\" je njepłaćiwy titul za stronu.",
- "sf_formstart_docu": "Zapodaj tu mjeno strony, kotraž so ma z formularom '$1' wobdźěłać. Jeli tuta strona hižo eksistuje, posrědkuješ k formularej, z kotrymž móžeš tut stronu wobdźěłać. Hewak posrědkuješ so k formularej, z kotrymž móžeš stronu přidać.",
- "sf_formstart_noform_docu": "Zapodaj tu mjeno strony a wubjer formular, z kotrymž chceš ju wobdźěłać. Jeli strona hižo eksistuje, posrědkuješ so k formularej, z kotrymž tutu stronu wobdźěłać. Hewak posrědkujes so k formularej, z kotrymž móžeš přidać.",
- "sf_formstart_createoredit": "Wutworić abo wobdźěłać",
- "formedit": "Z formularom wobdźěłać",
- "sf_formedit_createtitle": "$1 wutworić: $2",
- "sf_formedit_createtitlenotarget": "$1 wutworić",
- "sf_formedit_badurl": "To je strona za wobdźěłowanje z formularom. Dyrbiš formularne mjeno kaž tež cilowu stronu w URL podać; měło kaž 'Special:FormEdit?form=<formularne mjeno>&target=<cilowa strona>' abo 'Special:FormEdit/<formularne mjeno>/<cilowa strona>' wupadać.",
- "sf_formedit_altforms": "Móžeš město toho tutu stronu z jednym ze slědowacych formularow přidać:",
- "sf_formedit_altformsonly": "Wubjer přošu jedyn ze slědowacych formularow, zo by tutu stronu přidał:",
- "sf_formcreate": "Z formularom wutworić",
- "sf_viewform": "Formular wobhladać",
- "sf_editsource": "Žórło wobdźěłać",
- "sf_formedit_edittitle": "$1 wobdźěłać: $2",
- "sf_formedit_morethanoneform": "Warnowanje: Za tutu stronu bu wjace hač jedyn standardny formular definowany.",
- "sf_formedit_formwarning": "Warnowanje: Tuta strona <a href=\"$1\">hižo eksistuje</a>, ale njewužiwa tutón formular.",
- "sf_formedit_mismatchedbrackets": "Warnowanje: Tuta strona wobsahuje zhibowane abo róžkate spinki, kotrež njejsu wotzamknjene, formular njebudźe korektnje ze stronu wobchadźeć. Prošu <a href=\"$1\">porjedź zmylk w žórłowym teksće</a>. prjedy hač dale činiš.",
- "sf_formedit_remove": "Tutu instancu wotstronić",
- "sf_formedit_addanotherabove": "Dalšu instancu nad tutej přidać",
- "sf_formedit_addanother": "Dalše přidać",
- "sf_formedit_none": "Žadyn",
- "sf_formedit_emptytitle": "Zmylk: Zasunjene daty wjedu k prózdnemu titulej strony.",
- "sf_formedit_hookerror": "Zmylk: Rozšěrjenje MediaWiki je měnjenju ciloweje strony zadźěwało.",
- "sf_formedit_saveandcontinueediting": "Składować a pokročować",
- "sf_formedit_saveandcontinue_summary": "Je so z pomocu tłóčatka \"$1\" we formularje składował",
- "sf_formedit_tooltip_saveandcontinueediting": "Składować a dale wobdźěłować",
- "sf_autoedit_anoneditwarning": "Kedźbu: Njejsy přizjewjeny. Twoja IP-adresa budźe so do wersijowych stawiznow strony přijimać.",
- "sf_autoedit_success": "[[$1]] je so wuspěšnje z pomocu formulara $2 změnił.",
- "sf_autoedit_fail": "[[$1]] njeda so změnić.",
- "sf_autoedit_notargetspecified": "Žana cilowa strona podata.",
- "sf_autoedit_invalidtargetspecified": "Podata cilowa strona '''$1''' je njepłaćiwa.",
- "sf_autoedit_invalidform": "'''$1''' płaćiwy formular njeje.",
- "sf_autoedit_redirectlimitexeeded": "Maksimalny dalesposrědkowanski limit za formular $1 je so překročił.",
- "sf_autoedit_invalidredirecttarget": "$1 je njepłaćiwy dalesposrědkowanski cil za formular $2.",
- "sf_autoedit_invalidpreloadspecified": "Podata strona $1, kotraž ma so najprjedy začitać, je njepłaćiwa.",
- "sf_autoedit_redlinkexists": "$1 hižo eksistuje.",
- "sf_autoedit_noformfound": "Žadyn formular podaty.",
- "sf_autoedit_toomanyformsfound": "Za tutu stronu wjace hač jedyn formular k dispoziciji steji.",
- "sf_autoedit_readonly": "Datowa banka je tuchwilu přećiwo změnam zawrjena. Přičina: $1",
- "sf_autoedit_nosemanticform": "Formular $2 njeda so za stronu $1 wotwołać. Hlej [[{{#special:FormEdit}}/$2/$1]] za podrobnosće.",
- "sf_autoedit_summary": "Awtomatisce wot strony $1 wobdźěłany.",
- "sf-autoedit-wait": "Prošu čakać...",
- "runquery": "Naprašowanje startować",
- "sf_runquery_badurl": "Dyrbiš formularne mjeno w URL podać;\nURL měł wupadać kaž 'Special:RunQuery/<formularne mjeno>'.",
- "sf_runquery_title": "Start naprašowanja: $1",
- "sf_runquery_additionalquery": "Přidatne naprašowanje",
- "sf_formerrors_header": "Su zmylki z twojim formularnym zapodaćom wustupili, hlej deleka",
- "sf_blank_error": "Njesmě prózdny być!",
- "sf_bad_url_error": "dyrbi korektny format URL měć, kotryž so z 'http://' započina",
- "sf_bad_email_error": "dyrbi płaćiwy format za e-mejlowe adresy měć",
- "sf_bad_number_error": "dyrbi płaćiwa ličba być",
- "sf_bad_date_error": "dyrbi płaćiwy datum być",
- "uploadwindow": "Wokno nahraćow",
- "sf_deletionlog": "protokol wušmórnjenjow",
- "sf-preview-header": "Formularny přehlad",
- "sf-preview-note": "Tak budźe formular wupadać, hdyž so wužiwa:",
- "sf-pageschemas-pagenameformula": "Formla mjena strony:",
- "sf-pageschemas-createtitle": "Titul formulara za nowe strony:",
- "sf-pageschemas-edittitle": "Titul formulara za eksistowace strony:",
- "sf-pageschemas-inputtype": "Zapodawanski typ (prózdny wostajić, zo by standard wužiwało):",
- "sf_property_isproperty": "To je kajkosć typa $1.",
- "sf_property_linkstoform": "Wotkazuje k stronam, kotrež formular $1 wužiwaja.",
- "sf_property_allowedvals": "{{PLURAL:$1|Dowolena hódnota za tutu kajkosć je|Dowolenej hódnoće za tutu kajkosć stej|Dowolene hódnoty za tutu kajkosć su|Dowolene hódnoty za tutu kajkosć su}}:",
- "sf_template_docu": "To je předłoha '$1'. Měła so w slědowacym formaće wołać:",
- "sf_template_docufooter": "Wobdźěłaj tutu stronu, zo by tekst předłohi widźał.",
- "sf_form_docu": "To je formular \"$1\".\nZo by stronu z tutym formularom wutworił, zapodaj deleka mjeno strony;\njeli strona z tutym mjenom hižo eksistuje, posrědkuješ so dale k formularej, z kotrymž móžeš tutu stronu wobdźěłać.",
- "sf_form_freetextlabel": "Swobodny tekst",
- "sf_category_hasdefaultform": "Tuta kategorija wužiwa formular $1.",
- "sf_category_desc": "To je kategorija $1.",
- "sf_blank_namespace": "Hłowny",
- "right-viewedittab": "Rajtark \"{{int:edit}}\" za strony sej wobhladać, kotrež su přez formular wobźěłujomne",
- "right-editrestrictedfields": "Wobmjezowane formularne pola wobdźěłać",
- "right-createclass": "Nowe semantiske klasy wutworić",
- "action-createclass": "nowe semantiske klasy wutworić",
- "action-editrestrictedfields": "wobmjezowane formularne pola wobdźěłać",
- "action-viewedittab": "Rajtark \"{{int:edit}}\" za strony pokazać, kotrež su přez formular wobźěłujomne"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hu.json b/SemanticForms/i18n/hu.json
deleted file mode 100644
index 51822342..00000000
--- a/SemanticForms/i18n/hu.json
+++ /dev/null
@@ -1,125 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Dani",
- "Dj",
- "Dorgan",
- "Glanthor Reviol",
- "TK-999",
- "Tgr"
- ]
- },
- "semanticforms-desc": "Űrlapok szemantikus adatok hozzáadásához és szerkesztéséhez",
- "specialpages-group-sf_group": "Szemantikus űrlapok",
- "createproperty": "Tulajdonság létrehozása",
- "sf_createproperty_linktoform": "Ez a tulajdonság hivatkozni fog azokra a lapokra, amelyek használják az űrlapot:",
- "sf_createproperty_allowedvalsinput": "Ha azt szeretnéd, hogy ez a tulajdonság csak bizonyos értékeket vehessen fel, add meg az engedélyezett értékek listáját, vesszővel elválasztva (ha az érték tartalmaz vesszőt, használd a „\\,” alakot):",
- "sf_createproperty_propname": "Tulajdonságnév:",
- "sf_createproperty_proptype": "Típus:",
- "templates": "Sablonok",
- "sf_templates_docu": "A következő sablonok találhatóak meg a wikiben.",
- "sf_templates_definescat": "definiálja a kategóriát: $1",
- "createtemplate": "Sablon létrehozása",
- "sf_createtemplate_namelabel": "A sablon neve:",
- "sf_createtemplate_categorylabel": "A sablon által megadott kategória (nem kötelező):",
- "sf_createtemplate_templatefields": "A sablon mezői:",
- "sf_createtemplate_fieldsdesc": "Ha azt szeretnéd, hogy a sablonban lévő mezőknek ne kelljen mezőneveket adni, egyszerűen írd be a mező indexét (pl. 1, 2, 3 stb.) névként a valódi név helyett.",
- "sf_createtemplate_fieldname": "Mező neve:",
- "sf_createtemplate_displaylabel": "Megjelenített szöveg:",
- "sf_createtemplate_semanticproperty": "Szemantikus tulajdonság:",
- "sf_createtemplate_fieldislist": "Ez a mező értékek vesszővel elválasztott listáját tartalmazhatja.",
- "sf_createtemplate_aggregation": "Aggregáció",
- "sf_createtemplate_aggregationdesc": "A listázáshoz bármelyik lapon, ami ezt a sablont használja, az összes olyen lapnak, melynek van egy bizonyos tulajdonsága, ami arra a lapra mutat, add meg az alább látható tulajdonságot:",
- "sf_createtemplate_aggregationlabel": "Lista címe:",
- "sf_createtemplate_outputformat": "Kimeneti formátum:",
- "sf_createtemplate_standardformat": "Táblázat",
- "sf_createtemplate_infoboxformat": "Jobboldai infobox",
- "sf_createtemplate_addfield": "Mező hozzáadása",
- "sf_createtemplate_deletefield": "Törlés",
- "forms": "Űrlapok",
- "sf_forms_docu": "A következő űrlapok találhatóak meg a wikiben.",
- "sf_forminputs_mandatory": "Kötelező",
- "sf_forminputs_restricted": "Csak adminisztrátorok módosíthatják ezt a bemenetet",
- "sf_forminputs_class": "Ezen bemenet HTML \"osztály\" tulajdonsága",
- "sf_forminputs_default": "Az alapértelmezett érték ehhez a bemenethez",
- "sf_forminputs_preload": "Egy lap a wikin, amelynek tartalma ezen bemenet alapértéke lesz",
- "sf_forminputs_property": "Egy szemantikai tulajdonság, amelynek ez a mező megfelel",
- "sf_forminputs_size": "Ezen szövegbeviteli mező mérete karakterekben",
- "createform": "Űrlap létrehozása",
- "sf_createform_nameinput": "Űrlap neve",
- "sf_createform_nameinputdesc": "(az űrlapot szokás szerint a fő sablon után nevezzük el):",
- "sf_createform_template": "Sablon:",
- "sf_createform_templatelabelinput": "Sablon-címke (nem kötelező):",
- "sf_createform_allowmultiple": "A sablon többször is (vagy egyszer sem) szerepelhet az elkészült lapon",
- "sf_createform_field": "Mező:",
- "sf_createform_fieldprop": "Ez a mező definiálja a(z) $2 típusú $1 tulajdonságot.",
- "sf_createform_fieldproplist": "Ez a mező olyan elemek listáját definiálja, amelyeknek van $2 típusú $1 tulajdonságok.",
- "sf_createform_fieldpropunknowntype": "Ez a mező definiálja a nem megadott típusú $1 tulajdonságot.",
- "sf_createform_inputtype": "Bemenet típusa:",
- "sf_createform_inputtypedefault": "(alapértelmezett)",
- "sf_createform_formlabel": "Az űrlap címkéje:",
- "sf_createform_hidden": "Rejtett",
- "sf_createform_removetemplate": "Sablon eltávolítása",
- "sf_createform_addtemplate": "Sablon hozzáadása:",
- "sf_createform_atend": "A végén",
- "sf_createform_add": "Hozzáadás",
- "sf_createform_choosefield": "Válaszd ki azt a mezőt, amelyiket hozzá szeretnéd adni",
- "sf_createform_before": "Sablon elé:",
- "sf_createform_additembeforesave": "Legalább egy sablont hozzá kell rendelned az űrlaphoz a mentés előtt.",
- "createcategory": "Kategória létrehozása",
- "sf_createcategory_name": "Kategórianév:",
- "sf_createcategory_defaultform": "Alapértelmezett űrlap:",
- "sf_createcategory_makesubcategory": "Legyen ez egy kategória alkategóriája (nem kötelező):",
- "createclass": "Osztály létrehozása",
- "sf_createclass_docu": "Add meg itt az összes adatot a tulajdonságok, a sablon és a kategória létrehozásához egyetlen osztályhoz. További beállításokat a(z) $1 lapon végezhetsz.",
- "sf_createclass_allowedvalues": "Megengedett értékek:",
- "sf_createclass_listofvalues": "Értékek listája?",
- "sf_createclass_nameinput": "Űrlap neve:",
- "sf_createclass_missingvalues": "Nem töltötted ki az összes kötelező mezőt.",
- "sf_createclass_success": "Tulajdonságok, sablon, űrlap és kategória lesz létrehozva.",
- "sf_createclass_create": "Létrehozás",
- "formstart": "Oldal hozzáadása űrlappal",
- "sf_formstart_badform": "Hiba: nem található űrlap a(z) $1 címen",
- "sf_formstart_badtitle": "Hiba: a(z) „$1” érvénytelen lapcím.",
- "sf_formstart_docu": "Add meg annak a lapnak a nevét, amit a(z) „$1” űrlap segítségével szeretnél szerkeszteni.\nHa ez a lap már létezik, ahhoz az űrlaphoz leszel irányítva a lap szerkesztéséhez.\nEgyébként a lap hozzáadása űrlaphoz leszel küldve.",
- "sf_formstart_noform_docu": "Add meg annak a lapnak a nevét, majd válaszd ki az űrlapot, amivel szerkeszteni akarod.\nHa ez a lap már létezik, ahhoz az űrlaphoz leszel irányítva a lap szerkesztéséhez.\nEgyébként a lap hozzáadása űrlaphoz leszel küldve.",
- "sf_formstart_createoredit": "Létrehozás vagy szerkesztés",
- "formedit": "Szerkesztés űrlappal",
- "sf_formedit_createtitle": "$1 létrehozása: $2",
- "sf_formedit_badurl": "Ezen a lapon űrlap segítségével szerkeszthetsz. Meg kell adnod az űrlap nevét és a céllap URL-címét is;\na következőképpen kell kinéznie: „Special:FormEdit?form=<űrlap neve>&target=<céllap>”, vagy „Special:FormEdit/<űrlap neve>/<céllap>”.",
- "sf_formedit_altforms": "Helyette hozzáadhatod ezt a lapot a következő űrlapok egyikével:",
- "sf_formedit_altformsonly": "Válassz egyet a következő űrlapok közül, amit hozzá szeretnél adni ehhez a laphoz:",
- "sf_formcreate": "Létrehozás űrlappal",
- "sf_viewform": "Űrlap megtekintése",
- "sf_editsource": "Forrás szerkesztése",
- "sf_formedit_edittitle": "$1: $2 szerkesztése",
- "sf_formedit_morethanoneform": "'''Figyelmeztetés:''' több mint egy alapértelmezett űrlap van megadva ehhez a laphoz.",
- "sf_formedit_formwarning": "Figyelem: Ez a lap <a href=\"$1\">már létezik</a>, de nem használja ezt az űrlapot.",
- "sf_formedit_remove": "Eltávolítás",
- "sf_formedit_addanother": "Másik hozzáadása",
- "sf_formedit_none": "Nincs",
- "runquery": "Lekérdezés futtatása",
- "sf_runquery_badurl": "Meg kell adnod egy űrlap nevét az URL-ben;\naz URL-nek így kell kinéznie: 'Special:RunQuery/<űrlap neve>'.",
- "sf_runquery_title": "Lekérdezés futtatása: $1",
- "sf_runquery_additionalquery": "További lekérdezés",
- "sf_formerrors_header": "Hibák voltak az űrlapon megadott adatokban; lásd lentebb",
- "sf_blank_error": "nem lehet üres",
- "sf_bad_url_error": "a helyes URL formátumban kell lennie, az elején „http://”-vel",
- "sf_bad_email_error": "helyes e-mail cím formátumban kell lennie",
- "sf_bad_number_error": "számnak kell lennie",
- "sf_bad_date_error": "érvényes dátumnak kell lennie",
- "uploadwindow": "Feltöltési ablak",
- "sf_deletionlog": "Törlési napló",
- "sf_property_isproperty": "Ez egy „$1” típusú tulajdonság.",
- "sf_property_linkstoform": "Hivatkozik azokra a lapokra, amelyek a(z) $1 űrlapot használják.",
- "sf_property_allowedvals": "A tulajdonság a következő {{PLURAL:$1|értéket|értékeket}} veheti fel:",
- "sf_template_docu": "Ez a(z) „$1” sablon.\nA következő formátumban kell meghívni:",
- "sf_template_docufooter": "Szerkeszd a lapot, hogy láthasd a sablon szövegét.",
- "sf_form_docu": "Ez a(z) „$1” űrlap.\nHa új lapot szeretnél létrehozni ezzel az űrlappal, írd be alább a lap nevét.\nHa már létezik ilyen nevű lap, egy űrlaphoz leszel irányítva, ahol szerkesztheted a lapot.",
- "sf_form_freetextlabel": "Szabad szöveg",
- "sf_category_hasdefaultform": "Ez a kategória a(z) „$1” űrlapot használja.",
- "sf_category_desc": "Ez a(z) $1 kategória.",
- "sf_blank_namespace": "Fő",
- "right-viewedittab": "Nézd a „Szerkesztés” fület azokhoz a lapokhoz, melyek űrlappal szerkeszthetőek",
- "right-editrestrictedfields": "korlátozott űrlap-mezők szerkesztése"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/hy.json b/SemanticForms/i18n/hy.json
deleted file mode 100644
index 08599f66..00000000
--- a/SemanticForms/i18n/hy.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Vadgt",
- "Xelgen"
- ]
- },
- "formedit": "Ձևի միջոցով խմբագրել"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ia.json b/SemanticForms/i18n/ia.json
deleted file mode 100644
index 1663a2fa..00000000
--- a/SemanticForms/i18n/ia.json
+++ /dev/null
@@ -1,171 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "McDutchie"
- ]
- },
- "semanticforms-desc": "Formularios pro adder e modificar datos semantic",
- "specialpages-group-sf_group": "Formularios semantic",
- "createproperty": "Crear un proprietate",
- "sf_createproperty_linktoform": "Iste proprietate ligara verso paginas que usa le formulario:",
- "sf_createproperty_allowedvalsinput": "Si tu vole que iste proprietate sia permittite a haber solmente certe valores, entra le lista del valores permittite, separate per commas (si un valor contine un comma, reimplacia lo con \"\\,\"):",
- "sf_createproperty_propname": "Nomine del proprietate:",
- "sf_createproperty_proptype": "Typo:",
- "templates": "Patronos",
- "sf_templates_docu": "Le sequente patronos existe in le wiki.",
- "sf_templates_definescat": "defini categoria: $1",
- "createtemplate": "Crear un patrono",
- "sf_createtemplate_namelabel": "Nomine del patrono:",
- "sf_createtemplate_categorylabel": "Categoria definite per patrono (optional):",
- "sf_createtemplate_templatefields": "Campos de patrono",
- "sf_createtemplate_fieldsdesc": "Pro effectuar que le campos in iste patrono non require plus le nomines de campos, simplemente entra le indice de cata campo (p.ex. 1, 2, 3, etc.) como le nomine, in loco del nomine real.",
- "sf_createtemplate_fieldname": "Nomine del campo:",
- "sf_createtemplate_displaylabel": "Etiquetta pro monstrar:",
- "sf_createtemplate_semanticproperty": "Proprietate semantic:",
- "sf_createtemplate_fieldislist": "Iste campo pote tener un lista de valores, separate per commas",
- "sf_createtemplate_aggregation": "Aggregation",
- "sf_createtemplate_aggregationdesc": "Pro listar, in omne pagina que usa iste patrono, tote le paginas que ha un certe proprietate punctante verso ille pagina, specifica le proprietate in question ci infra:",
- "sf_createtemplate_aggregationlabel": "Titulo pro lista:",
- "sf_createtemplate_outputformat": "Formato de output:",
- "sf_createtemplate_standardformat": "Standard",
- "sf_createtemplate_infoboxformat": "Quadro de information a dextra",
- "sf_createtemplate_addfield": "Adder campo",
- "sf_createtemplate_deletefield": "Deler",
- "forms": "Formularios",
- "sf_forms_docu": "Le sequente formularios existe in le wiki.",
- "sf_forminputs_mandatory": "Es necessari mitter un valor pro iste entrata",
- "sf_forminputs_restricted": "Solmente administratores pote modificar iste campo de entrata",
- "sf_forminputs_class": "Le attributo HTML \"class\" pro iste entrata",
- "sf_forminputs_default": "Le valor predefinite pro iste entrata",
- "sf_forminputs_preload": "Un pagina wiki de que le contento devenira le valor predefinite de iste entrata",
- "sf_forminputs_property": "Un proprietate semantic a que iste campo corresponde",
- "sf_forminputs_size": "Le dimension de iste campo de texto, in characteres",
- "sf_forminputs_maxlength": "Le longitude maximal permittite del texto in iste campo",
- "sf_forminputs_placeholder": "Texto de adjuta que appare in le campo de entrata usque le usator clicca sur illo",
- "sf_forminputs_uploadable": "Placiar un ligamine \"Incargar file\" al latere de iste entrata",
- "sf_forminputs_defaultfilename": "Le nomine de file predefinite pro files incargate",
- "sf_forminputs_rows": "Le numero de lineas pro iste entrata",
- "sf_forminputs_cols": "Le numero de columnas pro iste entrata",
- "sf_forminputs_autogrow": "Facer iste entrata crescer in dimension si le texto excede su limite",
- "sf_forminputs_valuesfromproperty": "Un proprietate de que le valores in le wiki debe esser le insimul de valores de iste entrata",
- "sf_forminputs_valuesfromcategory": "Un categoria de que le paginas debe esser le insimul de valores de iste entrata",
- "sf_forminputs_valuesfromnamespace": "Un spatio de nomines de que le paginas debe esser le insimul de valores de iste entrata",
- "sf_forminputs_valuesfromconcept": "Un pagina de \"concepto\" de Semantic MediaWiki de que le paginas debe esser le insimul de valores de iste entrata",
- "sf_forminputs_valuesfromurl": "Un URL continente datos structurate que debe esser le insimul de valores de iste entrata",
- "sf_forminputs_values": "Le insimul de valores pro iste entrata, separate per commas",
- "sf_forminputs_list": "Marcar iste entrata como continente un lista de valores",
- "sf_forminputs_delimiter": "Le delimitator inter valores de campo, si iste entrata contine un lista de illos",
- "sf_forminputs_remoteautocompletion": "Usar autocompletion remote",
- "sf_forminputs_existingvaluesonly": "Permitter solmente valores ja presente in le lista",
- "sf_forminputs_showonselect": "Elementos de pagina a monstrar solmente si certe valores es seligite (exemplo: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "Le altitude de iste quadro de lista, in lineas",
- "sf_forminputs_includetimezone": "Includer un entrata pro le fuso horari",
- "sf_forminputs_topcategory": "Le categoria genitor de iste insimul de categorias (obligatori)",
- "sf_forminputs_hideroot": "Celar le categoria genitor",
- "sf_forminputs_depth": "Le numero de nivellos de categorias a monstrar initialmente",
- "sf_forminputs_height": "Le altitude de iste entrata, in pixeles",
- "sf_forminputs_width": "Le latitude de iste entrata, in pixeles",
- "createform": "Crear un formulario",
- "sf_createform_nameinput": "Nomine del formulario",
- "sf_createform_nameinputdesc": "(es costumari dar al formulario le nomine de su patrono principal):",
- "sf_createform_template": "Patrono:",
- "sf_createform_templatelabelinput": "Etiquetta del patrono (optional):",
- "sf_createform_allowmultiple": "Permitter multiple (o zero) instantias de iste patrono in le pagina create",
- "sf_createform_field": "Campo:",
- "sf_createform_fieldprop": "Iste campo defini le proprietate $1, del typo $2.",
- "sf_createform_fieldproplist": "Iste campo defini un lista de elementos que ha le proprietate $1, del typo $2.",
- "sf_createform_fieldpropunknowntype": "Iste campo defini le proprietate $1, de un typo non specificate.",
- "sf_createform_inputtype": "Typo de entrata:",
- "sf_createform_inputtypedefault": "(predefinition)",
- "sf_createform_formlabel": "Etiquetta de formulario:",
- "sf_createform_hidden": "Celate",
- "sf_createform_removetemplate": "Remover patrono",
- "sf_createform_addtemplate": "Adder patrono:",
- "sf_createform_atend": "Al fin",
- "sf_createform_add": "Adder",
- "sf_createform_choosefield": "Selige un campo a adder",
- "sf_createform_before": "Ante patrono:",
- "sf_createform_additembeforesave": "Tu debe adder al minus un patrono a iste formulario ante que tu pote salveguardar lo.",
- "createcategory": "Crear un categoria",
- "sf_createcategory_name": "Nomine del categoria:",
- "sf_createcategory_defaultform": "Formulario predefinite:",
- "sf_createcategory_makesubcategory": "Facer isto un subcategoria de un altere categoria (optional):",
- "createclass": "Crear un classe",
- "sf_createclass_docu": "Entra tote le datos hic pro crear le proprietates, patrono, formulario e categoria pro un singule classe. Pro plus optiones, usa le paginas $1 in loco de iste.",
- "sf_createclass_allowedvalues": "Valores permittite:",
- "sf_createclass_listofvalues": "Lista de valores?",
- "sf_createclass_nameinput": "Nomine del formulario:",
- "sf_createclass_missingvalues": "Non tote le campos requirite ha essite completate.",
- "sf_createclass_success": "Proprietates, patrono, formulario e categoria essera create.",
- "sf_createclass_create": "Crear",
- "formstart": "Adder pagina con formulario",
- "sf_formstart_badform": "Error: nulle pagina de formulario esseva trovate a $1",
- "sf_formstart_badtitle": "Error: \"$1\" es un titulo invalide pro un pagina.",
- "sf_formstart_docu": "Entra le nomine de un pagina hic, pro esser modificate con le formulario '$1'.\nSi iste pagina existe ja, tu essera inviate al formulario pro modificar ille pagina.\nAlteremente, tu essera inviate al formulario pro adder le pagina.",
- "sf_formstart_noform_docu": "Entra hic le nomine del pagina, e selige le formulario con le qual modificar lo.\nSi iste pagina ja existe, tu essera inviate al formulario pro modificar ille pagina.\nAlteremente, tu esserea inviate al formulario pro modificar le pagina.",
- "sf_formstart_createoredit": "Crear o modificar",
- "formedit": "Modificar con formulario",
- "sf_formedit_createtitle": "Crear $1: $2",
- "sf_formedit_createtitlenotarget": "Crear $1",
- "sf_formedit_badurl": "Isto es le pagina pro modificar con un formulario. Tu debe specificar e un nomine de formulario e un pagina de destination in le adresse URL; illo debe resimilar 'Special:FormEdit?form=<nomine del formulario>&target=<pagina de destination>', o 'Special:FormEdit/<nomine del formulario>/<pagina de destination>'.",
- "sf_formedit_altforms": "Tu pote, in loco de isto, adder iste pagina con un del sequente formularios:",
- "sf_formedit_altformsonly": "Per favor selige un del sequente formularios pro adder iste pagina:",
- "sf_formcreate": "Crear con formulario",
- "sf_viewform": "Vider formulario",
- "sf_editsource": "Modificar fonte",
- "sf_formedit_edittitle": "Modificar $1: $2",
- "sf_formedit_morethanoneform": "Attention: Plus de un formulario predefinite es definite pro iste pagina.",
- "sf_formedit_formwarning": "Attention: Iste pagina <a href=\"$1\">jam existe</a>, ma illo non usa iste formulario.",
- "sf_formedit_mismatchedbrackets": "Attention: Iste pagina contine parentheses crispe o quadrate que non es claudite, de sorta que le pagina non essera maneate correctemente per le formulario. Per favor <a href=\"$1\">repara le error in le texto fonte</a> ante de continuar.",
- "sf_formedit_remove": "Remover",
- "sf_formedit_addanother": "Adder un altere",
- "sf_formedit_none": "Nulle",
- "sf_formedit_emptytitle": "Error: Le datos inserite resulta in un titulo de pagina vacue.",
- "sf_formedit_hookerror": "Error: Un extension de MediaWiki impediva le modification del articulo de destination.",
- "sf_formedit_saveandcontinueediting": "Salveguardar e continuar",
- "sf_formedit_saveandcontinue_summary": "Salveguardate con button \"$1\" in formulario",
- "sf_formedit_tooltip_saveandcontinueediting": "Salveguardar le datos e continuar le modification",
- "sf_autoedit_anoneditwarning": "Attention: Tu non ha aperite un session. Tu adresse IP essera registrate in le historia de modificationes de iste pagina.",
- "sf_autoedit_success": "[[$1]] ha essite modificate usante le formulario $2.",
- "sf_autoedit_notargetspecified": "Nulle pagina de destination specificate.",
- "sf_autoedit_noformfound": "Nulle formulario specificate.",
- "sf_autoedit_toomanyformsfound": "Plus de un formulario es disponibile pro iste pagina.",
- "sf_autoedit_readonly": "Le base de datos es actualmente blocate contra modificationes. Motivo: $1",
- "sf_autoedit_nosemanticform": "Non poteva obtener le formulario $2 pro le pagina $1. Vide [[{{#special:FormEdit}}/$2/$1]] pro detalios.",
- "sf_autoedit_summary": "Modificate automaticamente ab le pagina $1.",
- "sf-autoedit-wait": "Un momento...",
- "runquery": "Executar consulta",
- "sf_runquery_badurl": "Es necessari specificar le nomine de un formulario in le URL;\nle URL debe esser in le forma 'Special:RunQuery/<nomine del formulario>'.",
- "sf_runquery_title": "Executar consulta: $1",
- "sf_runquery_additionalquery": "Consulta additional",
- "sf_formerrors_header": "Il ha errores in lo que tu entrava in le formulario; vide infra",
- "sf_blank_error": "non pote esser vacue",
- "sf_bad_url_error": "le adresse URL debe esser in formato correcte, comenciante con 'http'",
- "sf_bad_email_error": "le adresse de e-mail debe esser in formato correcte",
- "sf_bad_number_error": "debe esser un numero valide",
- "sf_bad_date_error": "debe esser un data valide",
- "uploadwindow": "Fenestra de incargamento",
- "sf_deletionlog": "registro de deletiones",
- "sf-preview-header": "Previsualisation de formulario",
- "sf-preview-note": "Ecce le aspecto del formulario in uso:",
- "sf-pageschemas-pagenameformula": "Formula pro nomines de pagina:",
- "sf-pageschemas-createtitle": "Titulo del formulario pro nove paginas:",
- "sf-pageschemas-edittitle": "Titulo del formulario pro paginas existente:",
- "sf-pageschemas-inputtype": "Typo de entrata (lassar vacue pro usar le predefinition):",
- "sf_property_isproperty": "Isto es un proprietate del typo $1.",
- "sf_property_linkstoform": "Illo liga verso paginas que usa le formulario $1.",
- "sf_property_allowedvals": "Le {{PLURAL:$1|valor|valores}} permittite pro iste proprietate es:",
- "sf_template_docu": "Isto es le patrono '$1'.\nIllo debe esser appellate in le formato sequente:",
- "sf_template_docufooter": "Modifica le pagina pro vider le texto del patrono.",
- "sf_form_docu": "Isto es le formulario \"$1\".\nPro crear un pagina con iste formulario, entra le nomine del pagina in basso;\nsi un pagina con iste nomine ja existe, tu essera inviate a un formulario pro modificar iste pagina.",
- "sf_form_freetextlabel": "Texto libere",
- "sf_category_hasdefaultform": "Iste categoria usa le formulario $1.",
- "sf_category_desc": "Isto es le categoria $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Vider le scheda \"Modificar\" pro paginas modificabile per formulario",
- "right-editrestrictedfields": "Modificar le campos restringite de formularios",
- "right-createclass": "Crear nove classes semantic",
- "action-createclass": "crear nove classes semantic",
- "action-editrestrictedfields": "modificar le campos restringite de formularios",
- "action-viewedittab": "vider le scheda \"Modificar\" pro paginas modificabile per formulario"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/id.json b/SemanticForms/i18n/id.json
deleted file mode 100644
index bc579c07..00000000
--- a/SemanticForms/i18n/id.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Bennylin",
- "Farras",
- "Irwangatot",
- "IvanLanin",
- "Rex"
- ]
- },
- "semanticforms-desc": "Formulir untuk menambahkan dan menyunting data semantik",
- "specialpages-group-sf_group": "Semantic Forms",
- "createproperty": "Buat properti",
- "sf_createproperty_linktoform": "Properti ini akan tertaut ke halaman yang menggunakan formulir:",
- "sf_createproperty_allowedvalsinput": "Jika Anda ingin properti ini hanya diizinkan untuk memiliki suatu nilai tertentu, masukkan daftar nilai yang diizinkan, dipisahkan dengan koma (jika suatu nilai mengandung koma, ganti dengan \"\\,\"):",
- "sf_createproperty_propname": "Nama properti:",
- "sf_createproperty_proptype": "Tipe:",
- "templates": "Templat",
- "sf_templates_docu": "Templat berikut ada di wiki ini",
- "sf_templates_definescat": "mendefinisikan kategori: $1",
- "createtemplate": "Buat templat",
- "sf_createtemplate_namelabel": "Nama templat:",
- "sf_createtemplate_categorylabel": "Kategori yang didefinisikan oleh templat (opsional):",
- "sf_createtemplate_templatefields": "Kolom templat",
- "sf_createtemplate_fieldsdesc": "Untuk membuat kolom pada templat ini tidak lagi membutuhkan nama kolom, masukkan saja indeks masing-masing kolom (mis. 1, 2, 3, dll.) sebagai nama, dan bukan nama yang sebenarnya.",
- "sf_createtemplate_fieldname": "Nama kolom:",
- "sf_createtemplate_displaylabel": "Label tampilan:",
- "sf_createtemplate_semanticproperty": "Properti semantik:",
- "sf_createtemplate_fieldislist": "Kolom ini dapat menampung daftar nilai, dipisahkan oleh koma",
- "sf_createtemplate_aggregation": "Agregasi",
- "sf_createtemplate_aggregationdesc": "Untuk memberikan daftar, pada setiap halaman yang menggunakan templat ini, semua halaman yang memiliki properti tertentu yang merujuk ke halaman tersebut, tentukan properti yang sesuai di bawah ini:",
- "sf_createtemplate_aggregationlabel": "Judul daftar:",
- "sf_createtemplate_outputformat": "Format keluaran:",
- "sf_createtemplate_standardformat": "Standar",
- "sf_createtemplate_infoboxformat": "Kotak info di sisi kanan",
- "sf_createtemplate_addfield": "Tambahkan kolom",
- "sf_createtemplate_deletefield": "Hapus",
- "forms": "Formulir",
- "sf_forms_docu": "Formulir berikut ada di wiki ini.",
- "sf_forminputs_mandatory": "Diwajibkan",
- "sf_forminputs_restricted": "Hanya administrator yang dapat menyunting masukan ini",
- "sf_forminputs_class": "Atribut HTML \"class\" untuk masukan ini",
- "sf_forminputs_default": "Nilai bawaan untuk masukan ini",
- "sf_forminputs_preload": "Halaman wiki yang isinya akan menjadi nilai bawaan masukan ini",
- "sf_forminputs_property": "Properti semantik yang berkaitan dengan bidang ini",
- "sf_forminputs_size": "Ukuran bidang teks ini (dalam karakter)",
- "sf_forminputs_maxlength": "Panjang teks maksimum yang diperbolehkan untuk bidang ini",
- "sf_forminputs_uploadable": "Tempatkan pranala \"Unggah berkas\" di samping masukan ini",
- "sf_forminputs_defaultfilename": "Nama berkas bawaan untuk pengunggahan berkas",
- "sf_forminputs_rows": "Jumlah baris untuk masukan ini",
- "sf_forminputs_cols": "Jumlah kolom untuk masukan ini",
- "sf_forminputs_autogrow": "Setel agar masukan ini dapat meluas ukurannya jika teks melebihi batas",
- "sf_forminputs_valuesfromproperty": "Properti wiki yang nilainya menjadi nilai untuk masukan ini",
- "sf_forminputs_valuesfromcategory": "Kategori yang halamannya menjadi nilai untuk masukan ini",
- "sf_forminputs_valuesfromnamespace": "Ruang nama yang halamannya menjadi nilai untuk masukan ini",
- "sf_forminputs_valuesfromconcept": "Halaman \"konsep\" Semantic MediaWiki yang halamannya menjadi nilai masukan ini",
- "sf_forminputs_valuesfromurl": "URL penyimpan data terstruktur yang harus menjadi set nilai masukan ini",
- "sf_forminputs_values": "Set nilai masukan ini, dipisahkan oleh koma",
- "sf_forminputs_list": "Tandai masukan ini menyimpan daftar nilai",
- "sf_forminputs_delimiter": "Pembatas antara nilai bidang, jika masukan ini menyimpan daftar nilai berbagai bidang",
- "sf_forminputs_remoteautocompletion": "Gunakan pelengkapan otomatis jarak jauh",
- "sf_forminputs_existingvaluesonly": "Hanya izinkan nilai yang sudah ada dalam daftar",
- "sf_forminputs_showonselect": "Elemen halaman yang ditampilkan hanya jika nilai tertentu dipilih (contoh: \"nilai1=>div1;nilai2=>div2\")",
- "sf_forminputs_listboxsize": "Tinggi kotak daftar ini, dalam baris",
- "sf_forminputs_includetimezone": "Sertakan masukan untuk zona waktu",
- "sf_forminputs_topcategory": "Kategori induk dari set kategori ini (wajib diisi)",
- "sf_forminputs_height": "Tinggi masukan, dalam piksel",
- "sf_forminputs_width": "Lebar masukan, dalam piksel",
- "createform": "Buat formulir",
- "sf_createform_nameinput": "Nama formulir",
- "sf_createform_nameinputdesc": "(formulir ini biasanya diberi nama yang sama dengan templat utamanya):",
- "sf_createform_template": "Templat:",
- "sf_createform_templatelabelinput": "Label templat (opsional):",
- "sf_createform_allowmultiple": "Izinkan beberapa (atau nol) templat ini di halaman yang dibuat",
- "sf_createform_field": "Kolom:",
- "sf_createform_fieldprop": "Kolom ini menentukan properti $1 yang bertipe $2.",
- "sf_createform_fieldproplist": "Kolom ini menentukan beberapa elemen yang memiliki properti $1 bertipe $2.",
- "sf_createform_fieldpropunknowntype": "Kolom ini menentukan properti $1 yang tipenya tidak ditentukan.",
- "sf_createform_inputtype": "Tipe masukan:",
- "sf_createform_inputtypedefault": "(baku)",
- "sf_createform_formlabel": "Label formulir:",
- "sf_createform_hidden": "Tersembunyi",
- "sf_createform_removetemplate": "Hapus templat",
- "sf_createform_addtemplate": "Tambah templat:",
- "sf_createform_atend": "Di akhir",
- "sf_createform_add": "Tambahkan",
- "sf_createform_choosefield": "Pilih kolom untuk ditambahkan",
- "sf_createform_before": "Sebelum templat:",
- "sf_createform_additembeforesave": "Anda harus memberikan paling tidak satu templat untuk formulir ini sebelum dapat menyimpannya.",
- "createcategory": "Buat kategori",
- "sf_createcategory_name": "Nama kategori:",
- "sf_createcategory_defaultform": "Formulir baku:",
- "sf_createcategory_makesubcategory": "Jadikan sebagai subkategori dari kategori lain (opsional):",
- "createclass": "Buat kelas",
- "sf_createclass_docu": "Masukkan semua data di sini untuk membuat properti, tempat, formulir, dan kategori untuk suatu kelas tunggal. Untuk lebih banyak pilihan, gunakan halaman $1.",
- "sf_createclass_allowedvalues": "Nilai yang diizinkan",
- "sf_createclass_listofvalues": "Daftar nilai",
- "sf_createclass_missingvalues": "Tidak semua kolom yang diperlukan telah diisi.",
- "sf_createclass_success": "Properti, templat, formulir, dan kategori akan dibuat.",
- "formstart": "Buat halaman dengan formulir",
- "sf_formstart_badform": "Kesalahan: halaman formulir tak ditemukan di $1",
- "sf_formstart_badtitle": "Kesalahan: \"$1\" adalah judul yang tidak valid untuk suatu halaman.",
- "sf_formstart_docu": "Masukkan nama halaman untuk disunting dengan formulir \"$1\" di sini.\nJika halaman ini sudah ada, Anda akan diarahkan ke formulir untuk menyunting halaman itu.\nJika belum, Anda akan diarahkan ke formulir untuk menambahkan halaman.",
- "sf_formstart_noform_docu": "Masukkan nama halaman di sini dan pilih formulir untuk menyuntingnya.\nJika halaman ini sudah ada, Anda akan diarahkan ke formulir untuk menyunting halaman itu.\nJika belum, Anda akan diarahkan ke formulir untuk menambahkan halaman.",
- "sf_formstart_createoredit": "Buat atau sunting",
- "formedit": "Sunting dengan formulir",
- "sf_formedit_createtitle": "Buat $1: $2",
- "sf_formedit_createtitlenotarget": "Buat $1",
- "sf_formedit_badurl": "Ini adalah halaman untuk menyunting menggunakan formulir. Anda harus memberikan baik nama formulir maupun nama halaman target di URL;\nbentuknya harus seperti 'Special:FormEdit?form=<form name>&target=<target page>', atau 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "Sebagai gantinya, Anda dapat menambahkan halaman ini dengan salah satu dari formulir berikut:",
- "sf_formedit_altformsonly": "Silakan pilih salah satu dari formulir berikut untuk menambah halaman ini:",
- "sf_formcreate": "Buat dengan formulir",
- "sf_viewform": "Lihat formulir",
- "sf_editsource": "Sunting sumber",
- "sf_formedit_edittitle": "Sunting $1: $2",
- "sf_formedit_morethanoneform": "'''Peringatan:''' Lebih dari satu formulir baku ditentukan untuk halaman ini.",
- "sf_formedit_formwarning": "Peringatan: Halaman ini <a href=\"$1\">telah ada</a> tapi tidak menggunakan formulir ini.",
- "sf_formedit_remove": "Hapus",
- "sf_formedit_addanother": "Tambah lagi",
- "sf_formedit_none": "Tidak ada",
- "sf_formedit_emptytitle": "Galat: Data yang disisipkan menghasilkan judul halaman kosong.",
- "sf_formedit_hookerror": "Galat: Ekstensi MediaWiki menghalangi modifikasi halaman sasaran.",
- "sf_formedit_saveandcontinueediting": "Simpan dan lanjutkan",
- "sf_formedit_tooltip_saveandcontinueediting": "Simpan dan lanjutkan penyuntingan",
- "sf_autoedit_anoneditwarning": "Peringatan: Anda belum masuk. Alamat IP Anda akan tercatat dalam riwayat suntingan halaman ini.",
- "sf_autoedit_success": "Berhasil mengubah [[$1]] dengan menggunakan formulir $2.",
- "runquery": "Jalankan query",
- "sf_runquery_badurl": "Anda harus menentukan suatu nama formulir di URL;\nbentuknya harus seperti 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Jalankan query: $1",
- "sf_runquery_additionalquery": "Query tambahan",
- "sf_formerrors_header": "Ada kesalahan pada masukan formulir Anda; lihat di bawah",
- "sf_blank_error": "tidak boleh kosong",
- "sf_bad_url_error": "harus memiliki format URL yang benar, dimulai dengan 'http'",
- "sf_bad_email_error": "harus memiliki format alamat surel yang benar",
- "sf_bad_number_error": "harus berupa angka",
- "sf_bad_date_error": "harus berupa tanggal",
- "uploadwindow": "Jendela pengunggahan",
- "sf_deletionlog": "Log penghapusan",
- "sf_property_isproperty": "Ini adalah properti bertipe $1",
- "sf_property_linkstoform": "Ia terhubung dengan halaman yang menggunakan formulir $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Nilai|Nilai}} yang diizinkan untuk properti ini adalah:",
- "sf_template_docu": "Ini adalah templat \"$1\".\nIa harus dipanggil dengan format berikut:",
- "sf_template_docufooter": "Sunting halaman ini untuk melihat teks templat.",
- "sf_form_docu": "Ini adalah formulir \"$1\".\nUntuk menambah halaman dengan menggunakan formulir ini, masukkan nama halaman di bawah ini;\njika halaman dengan nama tersebut sudah ada, Anda akan diarahkan ke formulir untuk menyunting halaman tersebut.",
- "sf_form_freetextlabel": "Teks bebas",
- "sf_category_hasdefaultform": "Kategori ini menggunakan formulir $1.",
- "sf_category_desc": "Ini adalah kategori $1.",
- "sf_blank_namespace": "Utama",
- "right-viewedittab": "Lihat tab \"Sunting\" untuk menyunting halaman dengan formulir",
- "right-editrestrictedfields": "Sunting kolom formulir terbatas"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ig.json b/SemanticForms/i18n/ig.json
deleted file mode 100644
index 829c17b9..00000000
--- a/SemanticForms/i18n/ig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ukabia"
- ]
- },
- "sf_createtemplate_deletefield": "Kàcha",
- "sf_createform_template": "Àtụ:",
- "sf_createform_add": "Tinyé"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/io.json b/SemanticForms/i18n/io.json
deleted file mode 100644
index 81ac1af0..00000000
--- a/SemanticForms/i18n/io.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Malafaya"
- ]
- },
- "templates": "Shabloni",
- "sf_createform_template": "Shablono:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/is.json b/SemanticForms/i18n/is.json
deleted file mode 100644
index de1fec75..00000000
--- a/SemanticForms/i18n/is.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "S.Örvarr.S"
- ]
- },
- "sf_createproperty_propname": "Nafn:",
- "sf_createtemplate_standardformat": "Staðlað",
- "sf_createcategory_name": "Nafn:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/it.json b/SemanticForms/i18n/it.json
deleted file mode 100644
index 2b7422e9..00000000
--- a/SemanticForms/i18n/it.json
+++ /dev/null
@@ -1,185 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Alessandro Rosà",
- "Beta16",
- "Civvì",
- "Darth Kule",
- "F. Cosoleto",
- "Gloria sah",
- "Melos"
- ]
- },
- "semanticforms-desc": "Modulo per aggiungere e modificare dati semantici",
- "specialpages-group-sf_group": "Moduli semantici",
- "createproperty": "Crea una proprietà",
- "sf-createproperty-with-name": "Crea proprietà: $1",
- "sf_createproperty_linktoform": "Questa proprietà ti collegherà alla pagina che usa il seguente modulo:",
- "sf_createproperty_allowedvalsinput": "Se vuoi che questa proprietà possa ammettere solo determinati valori, inserisci una lista di valori ammessi, separati da virgole (se un valore presenta una virgola, sostituiscilo con mettendoci un backslash davanti in questo modo \"\\,\"):",
- "sf_createproperty_propname": "Nome proprietà:",
- "sf_createproperty_proptype": "Tipo:",
- "templates": "Template",
- "sf_templates_docu": "Il seguente template già esiste nel wiki.",
- "sf_templates_definescat": "Definisci categorie: $1",
- "createtemplate": "Crea un nuovo template",
- "sf-createtemplate-with-name": "Crea template: $1",
- "sf_createtemplate_namelabel": "Nome template:",
- "sf_createtemplate_multipleinstance": "Questo template può essere incluso più volte nella pagina.",
- "sf_createtemplate_connectingproperty": "Nome della proprietà per collegare i campi di questo modello al resto della pagina:",
- "sf_createtemplate_categorylabel": "Categorie definite attraverso template (opzionale):",
- "sf_createtemplate_templatefields": "Campi template",
- "sf_createtemplate_fieldsdesc": "Per richiamare i campi di questo template non è necessario usare il loro nome, semplicemente inserisci il numero d'indice del campo (per esempio 1, 2, 3, etc) al posto del nome.",
- "sf_createtemplate_fieldname": "Nome campo:",
- "sf_createtemplate_displaylabel": "Etichetta da mostrare:",
- "sf_createtemplate_semanticproperty": "Proprietà semantiche:",
- "sf_createtemplate_fieldislist": "Questo campo può contenere una lista di valori, separati dalle virgole",
- "sf_createtemplate_aggregation": "Aggregazione",
- "sf_createtemplate_aggregationdesc": "Per vedere, fra le pagine che usano questo template, tutte le pagine che hanno una proprietà che punta a questa pagina, specifica la appropriata proprietà qui sotto:",
- "sf_createtemplate_aggregationlabel": "Titolo per la lista:",
- "sf_createtemplate_outputformat": "Formato di output:",
- "sf_createtemplate_standardformat": "Tabella",
- "sf_createtemplate_infoboxformat": "Infobox laterale",
- "sf_createtemplate_plainformat": "Testo normale",
- "sf_createtemplate_sectionsformat": "Sezioni",
- "sf_createtemplate_addfield": "Aggiungi campo",
- "sf_createtemplate_deletefield": "Cancella",
- "forms": "Moduli",
- "sf_forms_docu": "I seguenti moduli già esistono nel wiki.",
- "sf_forminputs_mandatory": "Obbligatorio",
- "sf_forminputs_restricted": "Solo gli amministratori possono modificare questo input",
- "sf_forminputs_class": "L'attributo HTML \"class\" per questo input",
- "sf_forminputs_default": "Il valore predefinito per questo input",
- "sf_forminputs_preload": "Una pagina wiki il cui contenuto diventerà il valore predefinito di questo input",
- "sf_forminputs_property": "Una proprietà semantica a cui questo campo corrisponde",
- "sf_forminputs_size": "La dimensione di questo campo di testo, in caratteri",
- "sf_forminputs_maxlength": "La lunghezza di testo massima permessa in questo campo",
- "sf_forminputs_placeholder": "Testo d'aiuto mostrato nell'input fino a quando l'utente fa clic su di esso",
- "sf_forminputs_uploadable": "Inserisci un link \"{{int:upload}}\" vicino a questo input",
- "sf_forminputs_defaultfilename": "Il nome di file predefinito per i file caricati",
- "sf_forminputs_rows": "Il numero di righe per questo input",
- "sf_forminputs_cols": "Il numero di colonne per questo input",
- "sf_forminputs_valuesfromproperty": "Una proprietà i cui valori nel wiki dovrebbero essere l'insieme di valori di questo input",
- "sf_forminputs_valuesfromcategory": "Una categoria le cui pagine dovrebbero essere l'insieme di valori di questo input",
- "sf_forminputs_valuesfromnamespace": "Un namespace le cui pagine dovrebbero essere l'insieme di valori di questo input",
- "sf_forminputs_valuesfromurl": "Un URL contenente dati strutturati che dovrebbero essere l'insieme di valori di questo input",
- "sf_forminputs_values": "L'insieme di valori di questo input, separati da virgole",
- "sf_forminputs_delimiter": "Il delimitatore tra i valori dei campi, se questo input contiene un elenco di essi",
- "sf_forminputs_remoteautocompletion": "Usa il completamento automatico remoto",
- "sf_forminputs_existingvaluesonly": "Consenti solo i valori già nella lista",
- "sf_forminputs_showonselect": "Elementi di pagina da visualizzare solo se sono selezionati certi valori (esempio: \"valore1=>div1;valore2=>div2\")",
- "sf_forminputs_listboxsize": "L'altezza di questo controllo listbox, in righe",
- "sf_forminputs_includetimezone": "Includi un input per il fuso orario",
- "sf_forminputs_topcategory": "La categoria superiore di questo insieme di categorie (obbligatorio)",
- "sf_forminputs_depth": "Il numero di livelli di categorie da mostrare inizialmente",
- "sf_forminputs_height": "L'altezza di questo input, in pixel",
- "sf_forminputs_width": "La larghezza di questo input, in pixel",
- "createform": "Crea un nuovo modulo",
- "sf-createform-with-name": "Crea modulo: $1",
- "sf_createform_nameinput": "Nome modulo",
- "sf_createform_nameinputdesc": "(la convenzione vuole che il nome del modulo sia lo stesso del template principale):",
- "sf_createform_template": "Template:",
- "sf_createform_templatelabelinput": "Nome da visualizzare del template (opzionale):",
- "sf_createform_allowmultiple": "Permetti multiple (o nessuna) istanze di questo template nella pagina creata",
- "sf_createform_field": "Campo:",
- "sf_createform_fieldprop": "Questo campo definisce le proprietà $1, di tipo $2.",
- "sf_createform_fieldproplist": "Questo campo definisce una lista di elementi che ha la proprietà $1, di tipo $2.",
- "sf_createform_fieldpropunknowntype": "Questo campo definisce la proprietà $1, di tipo non specificato.",
- "sf_createform_inputtype": "Tipo input:",
- "sf_createform_inputtypedefault": "(predefinito)",
- "sf_createform_formlabel": "Etcihetta del modulo:",
- "sf_createform_hidden": "Nascosto",
- "sf_createform_removetemplate": "Rimuovi template",
- "sf_createform_addtemplate": "Aggiungi template:",
- "sf_createform_atend": "Alla fine:",
- "sf_createform_add": "Aggiungi",
- "sf_createform_choosefield": "Scegli campo da aggiungere",
- "sf_createform_before": "Template precedente:",
- "sf_createform_additembeforesave": "Devi aggiungere almeno un template a questo modulo prima di poterlo salvare.",
- "createcategory": "Crea una categoria",
- "sf-createcategory-with-name": "Crea categoria: $1",
- "sf_createcategory_name": "Nome categoria:",
- "sf_createcategory_defaultform": "Modulo predefinito:",
- "sf_createcategory_makesubcategory": "Falla diventare una sottocategoria di una categoria già presente (opzionale):",
- "createclass": "Crea una classe",
- "sf_createclass_docu": "Aggiungi qui tutte le informazioni per creare le proprietà, i template, i moduli e le categoria per una singola classe. Per ulteriori opzioni invece vai alla pagina $1.",
- "sf_createclass_allowedvalues": "Valori consentiti:",
- "sf_createclass_listofvalues": "Lista di valori?",
- "sf_createclass_nameinput": "Nome modulo:",
- "sf_createclass_missingvalues": "Campi richiesti non completamente riempiti.",
- "sf_createclass_success": "Proprietà, template, moduli e categorie verranno create.",
- "sf_createclass_create": "Crea",
- "formstart": "Aggiungi pagina usando un modulo",
- "sf_formstart_badform": "Errore: nessun modulo è stato trovato alla pagina $1",
- "sf_formstart_badtitle": "Errore: \"$1\" non è un titolo valido per la pagina",
- "sf_formstart_docu": "Inserisci il nome della pagina qui, per esser modificata con il modulo '$1'.\nSe questa pagina esiste già, verrai indirizzato ad un modulo che ti permette di modificarla.\nAltrimenti, verrai indirizzato ad un nuovo modulo che ti permetterà di aggiungere la nuova pagina.",
- "sf_formstart_noform_docu": "Inserisci il nome della pagina qui, e selezione il modulo con cui la vuoi modificare.\n\tSe questa pagina esiste già, verrai indirizzato ad un modulo che ti permette di modificarla.\n\tAltrimenti, verrai indirizzato ad un nuovo modulo che ti permetterà di aggiungere la nuova pagina.",
- "sf_formstart_createoredit": "Crea o modifica",
- "formedit": "Modifica tramite un modulo",
- "sf_formedit_createtitle": "Crea $1: $2",
- "sf_formedit_createtitlenotarget": "Crea $1",
- "sf_formedit_badurl": "Questa è la pagina per modificare i dati inseriti tramite un modulo. Nell'URL devi specificare sia il nome del modulo e sia la pagina da modificare;\ndovrebbe risultare una cosa di questo tipo 'Special:FormEdit?form=<form name>&target=<target page>', oppure 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "Invece puoi aggiungere una pagina con uno dei seguenti moduli già creati:",
- "sf_formedit_altformsonly": "Per favore seleziona una dei seguenti moduli per aggiungere questa pagina:",
- "sf_formcreate": "Crea con un modulo",
- "sf_viewform": "Visualizza modulo",
- "sf_editsource": "Modifica sorgente",
- "sf_formedit_edittitle": "Modifica $1: $2",
- "sf_formedit_morethanoneform": "'''Attenzione:''' Più di un modulo predefinito è stato definito per questa pagina.",
- "sf_formedit_formwarning": "Attenzione: Questa pagina <a href=\"$1\">esiste già</a>, ma non usa questo form.",
- "sf_formedit_mismatchedbrackets": "Attenzione: questa pagina contiene parentesi quadre o graffe non chiuse, quindi la pagina non sarà gestita correttamente dal modulo. <a href=\"$1\">Correggere l'errore nel testo di origine</a> prima di procedere.",
- "sf_formedit_remove": "Rimuovi questa istanza",
- "sf_formedit_addanother": "Aggiungi un altro",
- "sf_formedit_none": "Nessuno",
- "sf_formedit_hookerror": "Errore: un'estensione MediaWiki ha impedito la modifica della pagina di destinazione.",
- "sf_formedit_saveandcontinueediting": "Salva e continua",
- "sf_formedit_saveandcontinue_summary": "Salvato utilizzando il pulsante \"$1\" nel modulo",
- "sf_formedit_tooltip_saveandcontinueediting": "Salva i dati e continua a modificare",
- "sf_autoedit_anoneditwarning": "Attenzione: Accesso non effettuato.\nNella cronologia della pagina verrà registrato il tuo indirizzo IP.",
- "sf_autoedit_success": "[[$1]] modificato correttamente utilizzando il modulo $2.",
- "sf_autoedit_notargetspecified": "Nessuna pagina di destinazione specificata.",
- "sf_autoedit_invalidtargetspecified": "La pagina di destinazione specificata '''$1''' non è valida.",
- "sf_autoedit_invalidform": "'''$1''' non è un modulo valido.",
- "sf_autoedit_redirectlimitexeeded": "Il limite massimo redirect per il modulo $1 è stato superato.",
- "sf_autoedit_redlinkexists": "$1 già esistente.",
- "sf_autoedit_noformfound": "Nessun modulo specificato.",
- "sf_autoedit_toomanyformsfound": "Più di un modulo disponibile per pagina.",
- "sf_autoedit_readonly": "Il database è attualmente bloccato per le modifiche. Motivo: $1",
- "sf_autoedit_nosemanticform": "Impossibile ottenere il modulo $2 per la pagina $1. Vedere [[{{#special:FormEdit}}/$2/$1]] per maggiori dettagli.",
- "sf_autoedit_summary": "Modificato automaticamente dalla pagina $1.",
- "sf-autoedit-wait": "Attendere prego...",
- "runquery": "Esegui query",
- "sf_runquery_badurl": "Devi specificare il nome del form nell'\\ URL;\nl'\\ URL dovrebbe risultare una cosa di questo tipo 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Esegui query: $1",
- "sf_runquery_additionalquery": "Query aggiuntive",
- "sf_formerrors_header": "Ci sono stati degli errori nel form di input; vedi qui sotto",
- "sf_too_few_instances_error": "Ci devono essere almeno $1 istanze di questo modello.",
- "sf_too_many_instances_error": "Ci devono essere non più di $1 istanze di questo modello.",
- "sf_blank_error": "Non può esser vuoto",
- "sf_bad_url_error": "Deve avere un formato dell'\\URL corretto, completo anche di 'http'",
- "sf_bad_email_error": "Deve avere un formato per di indirizzo email valido",
- "sf_bad_number_error": "Dev'\\esser un numero valido",
- "sf_bad_date_error": "Dev'\\esser una data valida",
- "uploadwindow": "Finestra di upload",
- "sf_deletionlog": "Log cancellazioni",
- "sf-preview-header": "Anteprima modulo",
- "sf-preview-note": "Il modulo apparirà così quando sarà usato:",
- "sf-pageschemas-createtitle": "Titolo del modulo per le nuove pagine:",
- "sf-pageschemas-edittitle": "Titolo del modulo per le pagine esistenti:",
- "sf-pageschemas-inputtype": "Tipo di input (lasciare vuoto per impostare al valore predefinito):",
- "sf_property_isproperty": "Questa è una proprietà di tipo $1.",
- "sf_property_linkstoform": "Ti collegherà alle pagine che usano il modulo $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Il valore permesso per questa proprità è|I valori permessi per questa proprietà sono}}:",
- "sf_template_docu": "Questo è il template '$1'.\nDovrebbe esser chiamato con il seguente formato:",
- "sf_template_docufooter": "Modificare la pagine per vedere il testo del template.",
- "sf_form_docu": "Questo è il modulo \"$1\".\nPer creare una pagina con questo modulo, inserire il nome della pagina qui sotto; se la pagina con il nome indicato esiste già, verrai inviato al modulo di modifica della pagina.",
- "sf_form_freetextlabel": "Testo libero",
- "sf_category_hasdefaultform": "Questa categoria usa il modulo $1.",
- "sf_category_desc": "Questa è la categoria $1.",
- "sf_blank_namespace": "Principale",
- "right-viewedittab": "Visualizza la scheda \"{{int:edit}}\" per le pagine modificabili tramite modulo",
- "right-editrestrictedfields": "Modifica campi riservati di moduli",
- "right-createclass": "Crea nuovi classi semantiche",
- "action-createclass": "creare nuove classi semantiche",
- "action-editrestrictedfields": "modificare i campi riservati dei moduli",
- "action-viewedittab": "visualizzare la scheda \"{{int:edit}}\" per le pagine modificabili tramite modulo"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ja.json b/SemanticForms/i18n/ja.json
deleted file mode 100644
index 661ded8f..00000000
--- a/SemanticForms/i18n/ja.json
+++ /dev/null
@@ -1,186 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Aotake",
- "Fryed-peach",
- "Hosiryuhosi",
- "Schu",
- "Shirayuki",
- "Whym",
- "青子守歌"
- ]
- },
- "semanticforms-desc": "意味的データを追加/編集するフォーム",
- "specialpages-group-sf_group": "意味的フォーム",
- "createproperty": "プロパティの作成",
- "sf-createproperty-with-name": "プロパティの作成: $1",
- "sf_createproperty_linktoform": "このプロパティは、以下のフォームを使用するページにリンクします:",
- "sf_createproperty_allowedvalsinput": "このプロパティに一部の値のみを設定できるようにするには、許可する値をカンマで区切って列挙します (値がカンマを含む場合は「\\,」に置換):",
- "sf_createproperty_propname": "プロパティ名:",
- "sf_createproperty_proptype": "型:",
- "templates": "テンプレート一覧",
- "sf_templates_docu": "以下のテンプレートがウィキに存在します。",
- "sf_templates_definescat": "定義するカテゴリ: $1",
- "createtemplate": "テンプレートの作成",
- "sf-createtemplate-with-name": "テンプレートの作成: $1",
- "sf_createtemplate_namelabel": "テンプレート名:",
- "sf_createtemplate_multipleinstance": "このテンプレートは、ページで複数回呼び出される場合があります。",
- "sf_createtemplate_categorylabel": "テンプレートが定義するカテゴリ (省略可能):",
- "sf_createtemplate_templatefields": "テンプレートのフィールド",
- "sf_createtemplate_fieldsdesc": "このテンプレートにフィールドを持たせるのにフィールド名は不要です。実際の名前の代わりに、単に各フィールドの番号 (1、2、3、など) を名前として入力してください。",
- "sf_createtemplate_fieldname": "フィールド名:",
- "sf_createtemplate_displaylabel": "表示ラベル:",
- "sf_createtemplate_semanticproperty": "意味的プロパティ:",
- "sf_createtemplate_fieldislist": "このフィールドが複数の値をカンマで区切った列挙を保持できるようにする",
- "sf_createtemplate_aggregation": "集約",
- "sf_createtemplate_aggregationdesc": "このテンプレートを使用しているページで、そのページを指すプロパティを持つすべての記事を列挙するには、該当プロパティを以下に指定してください:",
- "sf_createtemplate_aggregationlabel": "一覧の名前:",
- "sf_createtemplate_outputformat": "出力形式:",
- "sf_createtemplate_standardformat": "表",
- "sf_createtemplate_infoboxformat": "端の情報ボックス",
- "sf_createtemplate_plainformat": "プレーンテキスト",
- "sf_createtemplate_sectionsformat": "節",
- "sf_createtemplate_addfield": "フィールドを追加",
- "sf_createtemplate_deletefield": "削除",
- "forms": "フォーム一覧",
- "sf_forms_docu": "以下のフォームがウィキに存在します。",
- "sf_forminputs_mandatory": "この入力の必須入力の値",
- "sf_forminputs_restricted": "管理者のみがこの入力を編集できます",
- "sf_forminputs_class": "この入力の HTML の「class」属性",
- "sf_forminputs_default": "この入力の既定値",
- "sf_forminputs_preload": "その内容がこの入力の既定値になる、ウィキページ",
- "sf_forminputs_size": "このテキストフィールドの文字数でのサイズ",
- "sf_forminputs_maxlength": "このフィールド内の文字列の最大長",
- "sf_forminputs_uploadable": "この入力の隣に「{{int:upload}}」のリンクを配置",
- "sf_forminputs_defaultfilename": "アップロードされたファイルの既定のファイル名",
- "sf_forminputs_rows": "この入力の行数",
- "sf_forminputs_cols": "この入力の列数",
- "sf_forminputs_valuesfromproperty": "そのウィキ内の値のプロパティは、この値の入力のセットになります",
- "sf_forminputs_valuesfromcategory": "ページの値のこの入力のセットがあるはずのカテゴリ",
- "sf_forminputs_valuesfromnamespace": "そのページの名前空間は、この値の入力のセットになります",
- "sf_forminputs_list": "この入力が複数の値の列挙を保持できるように印を付ける",
- "sf_forminputs_delimiter": "この入力が複数のフィールド値の列挙を保持する場合の、値の間の区切り文字",
- "sf_forminputs_remoteautocompletion": "リモート自動補完を使用",
- "sf_forminputs_existingvaluesonly": "一覧に既にある値のみを許可",
- "sf_forminputs_listboxsize": "このリストボックスの高さ (行)",
- "sf_forminputs_includetimezone": "タイムゾーンの入力を含める",
- "sf_forminputs_topcategory": "カテゴリのこのセットの親カテゴリ (必須)",
- "sf_forminputs_hideroot": "親カテゴリを非表示",
- "sf_forminputs_depth": "最初に表示するカテゴリのレベルの数",
- "sf_forminputs_height": "この入力の高さ (ピクセル)",
- "sf_forminputs_width": "この入力の幅 (ピクセル)",
- "createform": "フォームの作成",
- "sf-createform-with-name": "フォームの作成: $1",
- "sf_createform_nameinput": "フォーム名",
- "sf_createform_nameinputdesc": "(通常、フォームはメインテンプレートと同じ名前になります):",
- "sf_createform_template": "テンプレート:",
- "sf_createform_templatelabelinput": "テンプレートのラベル (省略可能):",
- "sf_createform_allowmultiple": "作成したページでこのテンプレートを複数回使用できるようにする",
- "sf_createform_field": "フィールド:",
- "sf_createform_fieldprop": "このフィールドではプロパティ $1 (型 $2) を指定します。",
- "sf_createform_fieldproplist": "このフィールドは型 $2 のプロパティ $1 を持つ要素一覧を定義します。",
- "sf_createform_fieldpropunknowntype": "このフィールドではプロパティ $1 (型は未指定) を指定します。",
- "sf_createform_inputtype": "入力型:",
- "sf_createform_inputtypedefault": "(既定)",
- "sf_createform_formlabel": "フォームのラベル:",
- "sf_createform_hidden": "非表示",
- "sf_createform_removetemplate": "テンプレートを除去",
- "sf_createform_addtemplate": "追加するテンプレート:",
- "sf_createform_atend": "末尾に",
- "sf_createform_add": "追加",
- "sf_createform_choosefield": "追加するフィールドを選択",
- "sf_createform_pagesection": "ページの節:",
- "sf_createform_addsection": "追加する節",
- "sf_createform_removesection": "節を除去",
- "sf_createform_before": "以下のテンプレートの前:",
- "sf_createform_addelements": "要素の追加",
- "sf_createform_hiddensection": "この入力はフォームでは非表示です",
- "sf_createform_sectionlevel": "節のレベル:",
- "sf_createform_sectionname": "節の名前",
- "sf_createform_additembeforesave": "保存する前に、このフォームにテンプレートまたはページの節を少なくとも1つ追加する必要があります。",
- "sf_createform_otherparameters": "その他のパラメーター",
- "createcategory": "カテゴリの作成",
- "sf-createcategory-with-name": "カテゴリの作成: $1",
- "sf_createcategory_name": "カテゴリ名:",
- "sf_createcategory_defaultform": "既定のフォーム:",
- "sf_createcategory_makesubcategory": "以下のカテゴリの下位カテゴリにする (任意選択):",
- "createclass": "クラスの作成",
- "sf_createclass_docu": "単一のクラスに対応するプロパティ群、テンプレート、フォーム、カテゴリの作成に必要なデータすべてをここに入力してください。詳細なオプションが必要であれば、$1 の各ページを使用してください。",
- "sf_createclass_allowedvalues": "許可される値:",
- "sf_createclass_listofvalues": "値の列挙?",
- "sf_createclass_nameinput": "フォーム名:",
- "sf_createclass_missingvalues": "必須のフィールドに未入力のものがあります。",
- "sf_createclass_success": "プロパティ群、テンプレート、フォーム、カテゴリが作成されます。",
- "sf_createclass_create": "作成",
- "formstart": "フォームによるページの追加",
- "sf_formstart_badform": "エラー: ページ「$1」にはフォームが見つかりませんでした。",
- "sf_formstart_badtitle": "エラー: 「$1」はページ名として無効です。",
- "sf_formstart_docu": "フォーム「$1」で編集するページの名前を入力してください。\nそのページが既に存在する場合は、それを編集するフォームへ転送されます。\n存在しない場合は、そのページを追加するフォームに転送されます。",
- "sf_formstart_noform_docu": "ページ名を入力して、編集に使用するフォームを選択してください。\nそのページが既に存在する場合は、それを編集するフォームに転送されます。\n存在しない場合は、そのページを追加するフォームに転送されます。",
- "sf_formstart_createoredit": "作成または編集",
- "formedit": "フォームを使用して編集",
- "sf_formedit_createtitle": "$1 の作成: $2",
- "sf_formedit_createtitlenotarget": "$1 の作成",
- "sf_formedit_badurl": "このページは、フォームでの編集に使用するものです。フォーム名と対象ページの両方を、URL に指定する必要があります。\n「Special:FormEdit?form=<フォーム名>&target=<対象ページ>」または「Special:FormEdit/<フォーム名>/<対象ページ>」のような形式になります。",
- "sf_formedit_altforms": "以下のいずれかのフォームを使用して、このページを代わりに追加できます:",
- "sf_formedit_altformsonly": "このページを追加するために、以下のいずれかのフォームを洗濯してください:",
- "sf_formcreate": "フォームを使用して作成",
- "sf_viewform": "フォームを表示",
- "sf_editsource": "ソースを編集",
- "sf_formedit_edittitle": "$1 の編集: $2",
- "sf_formedit_morethanoneform": "'''警告:''' このページに対する既定のフォームが複数定義されています。",
- "sf_formedit_formwarning": "警告: このページは<a href=\"$1\">既に存在します</a>が、このフォームを使用していません。",
- "sf_formedit_remove": "このインスタンスを除去",
- "sf_formedit_addanotherabove": "これの上に別のインスタンスを追加",
- "sf_formedit_addanother": "さらに追加",
- "sf_formedit_none": "なし",
- "sf_formedit_saveandcontinueediting": "保存して続行",
- "sf_formedit_saveandcontinue_summary": "フォームの「$1」ボタンで保存済み",
- "sf_formedit_tooltip_saveandcontinueediting": "データを保存して編集を続行",
- "sf_autoedit_anoneditwarning": "'''警告:''' ログインしていません。編集すると、IPアドレスがこのページの編集履歴に記録されます。",
- "sf_autoedit_success": "フォーム $2 を使用して [[$1]] を変更しました。",
- "sf_autoedit_fail": "[[$1]] の変更に失敗しました。",
- "sf_autoedit_invalidform": "'''$1''' は有効なフォームではありません。",
- "sf_autoedit_redirectlimitexeeded": "フォーム $1 がリダイレクト回数の上限に達しました。",
- "sf_autoedit_invalidredirecttarget": "$1 はフォーム $2 のリダイレクト先として無効です。",
- "sf_autoedit_invalidpreloadspecified": "指定したプリロードページ $1 は無効です。",
- "sf_autoedit_redlinkexists": "$1 は既に存在します。",
- "sf_autoedit_noformfound": "フォームが指定されていません。",
- "sf_autoedit_toomanyformsfound": "ページで利用できるフォームが複数あります。",
- "sf_autoedit_summary": "ページ $1 から自動的に編集されました。",
- "sf-autoedit-wait": "お待ちください...",
- "runquery": "クエリの実行",
- "sf_runquery_badurl": "URL 内にフォーム名を指定しなければなりません。\nURL は「Special:RunQuery/<フォーム名>」のような形式になります。",
- "sf_runquery_title": "クエリの実行: $1",
- "sf_runquery_additionalquery": "追加のクエリ",
- "sf_formerrors_header": "フォームへの入力内容に誤りがありました。以下をご覧ください",
- "sf_blank_error": "空欄にはできません",
- "sf_bad_url_error": "URL を「http」から始まる正しい形式にする必要があります",
- "sf_bad_email_error": "メールアドレスを正しい形式にする必要があります",
- "sf_bad_number_error": "有効な数値にする必要があります",
- "sf_bad_date_error": "正しい日付にする必要があります",
- "uploadwindow": "アップロード ウィンドウ",
- "sf_deletionlog": "削除記録",
- "sf-preview-header": "フォーム プレビュー",
- "sf-preview-note": "フォームが使用される際、このように表示されます:",
- "sf-pageschemas-createtitle": "新しいページに使用するフォーム名:",
- "sf-pageschemas-edittitle": "既存のページに使用するフォーム名:",
- "sf-pageschemas-inputtype": "入力型 (既定値を使用する場合は空白):",
- "sf-pageschemas-otherparams": "パラメーター名とその値を key=value のような対にして、カンマ区切りで入力してください (値がカンマを含む場合は、それを「\\,」に置換してください)。例: $1",
- "sf_property_isproperty": "これは型 $1 のプロパティです。",
- "sf_property_linkstoform": "フォーム $1 を使用するページにリンクしています。",
- "sf_property_allowedvals": "このプロパティが取れる{{PLURAL:$1|値}}:",
- "sf_template_docu": "これはテンプレート「$1」です。\n以下の書式で呼び出されます:",
- "sf_template_docufooter": "テンプレートの内容を見るにはページを編集してください。",
- "sf_form_docu": "これは「$1」フォームです。\nこのフォームを使用してページを作成するには、下にページ名を入力してください。\nその名前のページが既に存在する場合は、そのページを編集するフォームに転送されます。",
- "sf_form_freetextlabel": "自由形式テキスト",
- "sf_category_hasdefaultform": "このカテゴリはフォーム $1 を使用しています。",
- "sf_category_desc": "これはカテゴリ $1 です。",
- "sf_blank_namespace": "標準",
- "right-viewedittab": "フォームで編集できるページに「{{int:edit}}」タブが表示される",
- "right-editrestrictedfields": "制限されたフォームフィールドを編集",
- "right-createclass": "新しい意味クラスを作成",
- "action-createclass": "新しい意味クラスを作成",
- "action-editrestrictedfields": "制限されたフォームフィールドの編集",
- "action-viewedittab": "フォームで編集できるページに「{{int:edit}}」タブを表示"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/jbo.json b/SemanticForms/i18n/jbo.json
deleted file mode 100644
index 92b1e977..00000000
--- a/SemanticForms/i18n/jbo.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Gleki"
- ]
- },
- "sf_editsource": "stika lo krasi"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/jv.json b/SemanticForms/i18n/jv.json
deleted file mode 100644
index 2deb9fca..00000000
--- a/SemanticForms/i18n/jv.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Meursault2004",
- "Pras"
- ]
- },
- "sf_createproperty_propname": "Jeneng sifat/properti:",
- "sf_createproperty_proptype": "Jenis:",
- "templates": "Cithakan-cithakan",
- "sf_templates_docu": "Cithakan-cithakan iki ana ing wiki iki.",
- "sf_templates_definescat": "namtokaké kategori: $1",
- "createtemplate": "Nggawé cithakan",
- "sf_createtemplate_namelabel": "Jeneng cithakan:",
- "sf_createtemplate_fieldname": "Jeneng lapangan:",
- "sf_createtemplate_semanticproperty": "Sifat sémantik:",
- "sf_createtemplate_aggregationlabel": "Irah-irahan kanggo daftar:",
- "sf_createtemplate_standardformat": "Baku",
- "sf_createtemplate_deletefield": "Busak",
- "forms": "Formulir-formulir",
- "sf_forminputs_restricted": "Diwatesi (namung para panganggo opsis sing bisa modifikasi)",
- "createform": "Nggawé formulir",
- "sf_createform_template": "Cithakan:",
- "sf_createform_templatelabelinput": "Label cithakan (opsional):",
- "sf_createform_field": "Lapangan:",
- "sf_createform_inputtype": "Jenis input:",
- "sf_createform_inputtypedefault": "(baku)",
- "sf_createform_formlabel": "Label formulir:",
- "sf_createform_hidden": "Kadelikaké",
- "sf_createform_removetemplate": "Ilangana cithakan",
- "sf_createform_add": "Tambah",
- "createcategory": "Gawé kategori",
- "sf_createcategory_name": "Jeneng kategori:",
- "sf_createcategory_defaultform": "Formulir baku:",
- "sf_editsource": "Sunting sumber",
- "sf_formedit_edittitle": "Sunting $1: $2",
- "sf_formedit_remove": "Busak",
- "sf_formedit_addanother": "Tambah liyané",
- "sf_formedit_none": "Ora ana",
- "sf_blank_error": "ora olèh kosong",
- "sf_bad_email_error": "kudu duwé format alamat e-mail sing absah",
- "sf_bad_number_error": "kudu angka sing absah",
- "sf_bad_date_error": "kudu tanggal sing absah",
- "sf_template_docufooter": "Suntingen kacané kanggo ndeleng tèks cithakan.",
- "sf_form_freetextlabel": "Tèks bébas",
- "sf_category_hasdefaultform": "Kategori iki nganggo formulir $1.",
- "sf_category_desc": "Iki kategori $1",
- "sf_blank_namespace": "Utama"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ka.json b/SemanticForms/i18n/ka.json
deleted file mode 100644
index 4339b1a9..00000000
--- a/SemanticForms/i18n/ka.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "David1010"
- ]
- },
- "semanticforms-desc": "ფორმა სემანტიკური მონაცემების დასამატებლად და რედაქტირებისათვის",
- "specialpages-group-sf_group": "სემანტიკური ფორმები",
- "createproperty": "თვისების შექმნა",
- "sf-createproperty-with-name": "თვისების შექმნა: $1",
- "sf_createproperty_propname": "თვისების სახელი:",
- "sf_createproperty_proptype": "ტიპი:",
- "templates": "თარგები",
- "createtemplate": "თარგის შექმნა",
- "sf-createtemplate-with-name": "თარგის შექმნა: $1",
- "sf_createtemplate_namelabel": "თარგის სახელი:",
- "sf_createtemplate_categorylabel": "თარგის მიერ განსაზღვრადი კატეგორია (არასავალდებულო):",
- "sf_createtemplate_templatefields": "თარგის ველები",
- "sf_createtemplate_fieldname": "ველის სახელი:",
- "sf_createtemplate_displaylabel": "სახელი ეკრანზე:",
- "sf_createtemplate_semanticproperty": "სემანტიკური თვისება:",
- "sf_createtemplate_aggregation": "კავშირი",
- "sf_createtemplate_aggregationlabel": "სიის სათაური:",
- "sf_createtemplate_standardformat": "ცხრილი",
- "sf_createtemplate_infoboxformat": "ინფოდაფის მხარე",
- "sf_createtemplate_plainformat": "ჩვეულებრივი ტექსტი",
- "sf_createtemplate_sectionsformat": "სექციები",
- "sf_createtemplate_addfield": "ველის დამატება",
- "sf_createtemplate_deletefield": "წაშლა",
- "forms": "ფორმები",
- "createform": "ფორმის შექმნა",
- "sf-createform-with-name": "ფორმის შექმნა: $1",
- "sf_createform_nameinput": "ფორმის სახელი",
- "sf_createform_template": "თარგი:",
- "sf_createform_templatelabelinput": "თარგის აღნიშვნა (არასავალდებულო):",
- "sf_createform_field": "ველი:",
- "sf_createform_inputtype": "ველის ტიპი:",
- "sf_createform_inputtypedefault": "(სტანდარტული)",
- "sf_createform_hidden": "დამალული",
- "sf_createform_removetemplate": "თარგის წაშლა",
- "sf_createform_addtemplate": "თარგის დამატება:",
- "sf_createform_atend": "ბოლოს",
- "sf_createform_add": "დამატება",
- "sf_createform_choosefield": "დასამატებლად აირჩიეთ ველი",
- "sf_createform_before": "თარგამდე:",
- "createcategory": "კატეგორიის შექმნა",
- "sf-createcategory-with-name": "კატეგორიის შექმნა: $1",
- "sf_createcategory_name": "კატეგორიის სახელი:",
- "sf_createcategory_defaultform": "სტანდარტული ფორმა:",
- "createclass": "კლასის შექმნა",
- "sf_createclass_nameinput": "ფორმის სახელი:",
- "sf_createclass_create": "შექმნა",
- "sf_formstart_createoredit": "შექმნა ან რედაქტირება",
- "formedit": "ფორმით რედაქტირება",
- "sf_formedit_createtitle": "$1 შექმნა: $2",
- "sf_formedit_createtitlenotarget": "$1 შექმნა",
- "sf_formcreate": "ფორმით შექმნა",
- "sf_viewform": "ფორმის ხილვა",
- "sf_editsource": "წყაროს რედაქტირება",
- "sf_formedit_edittitle": "$1 რედაქტირება: $2",
- "sf_formedit_remove": "წაშლა",
- "sf_formedit_none": "არაფერი",
- "sf_formedit_saveandcontinueediting": "შენახვა და გაგრძელება",
- "sf_formedit_tooltip_saveandcontinueediting": "მონაცემების შენახვა და რედაქტირების გარძელება",
- "sf_autoedit_anoneditwarning": "გაფრთხილება: თქვენ არ ხართ რეგისტრირებული. თქვენი IP მისამართი ჩაიწერება ამ გვერდის რედაქტირების ისტორიაში.",
- "sf_autoedit_invalidform": "$1 არ არის სწორი ფორმა.",
- "sf_autoedit_redlinkexists": "$1 უკვე არსებობს.",
- "sf_autoedit_noformfound": "ფორმა არ არის გარკვეული.",
- "sf-autoedit-wait": "მოიცადეთ...",
- "runquery": "მოთხოვნის გაშვება",
- "sf_runquery_title": "მოთხოვნის გაშვება: $1",
- "sf_runquery_additionalquery": "დამატებითი მოთხოვნები",
- "sf_blank_error": "არ შეიძლება ცარიელი იყოს",
- "sf_bad_number_error": "უნდა იყოს სწორი რიცხვი",
- "sf_bad_date_error": "უნდა იყოს სწორი თარიღი",
- "uploadwindow": "ატვირთვის ფანჯარა",
- "sf_deletionlog": "წაშლების ჟურნალი",
- "sf-preview-header": "ფორმის წინასწარი გადახედვა",
- "sf-pageschemas-pagenameformula": "გვერდის სახელის ფორმულა:",
- "sf-pageschemas-createtitle": "ფორმის სათაური ახალი გვერდებისათვის:",
- "sf-pageschemas-edittitle": "ფორმის სათაური არსებული გვერდებისათვის:",
- "sf_form_freetextlabel": "თავისუფალი ტექსტი",
- "sf_blank_namespace": "მთავარი"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/km.json b/SemanticForms/i18n/km.json
deleted file mode 100644
index 906dcc57..00000000
--- a/SemanticForms/i18n/km.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Chhorran",
- "Lovekhmer",
- "Thearith",
- "គីមស៊្រុន",
- "វ័ណថារិទ្ធ"
- ]
- },
- "specialpages-group-sf_group": "ទម្រង់​និឃណ្ដសាស្ត្រ",
- "createproperty": "បង្កើត​លក្ខណៈសម្បត្តិ",
- "sf_createproperty_propname": "ឈ្មោះលក្ខណៈសម្បត្តិ៖",
- "sf_createproperty_proptype": "ប្រភេទ៖",
- "templates": "ទំព័រគំរូ",
- "sf_templates_docu": "ខាងក្រោមនេះជាទំព័រគំរូដែលមានក្នុងវិគីនេះ។",
- "sf_templates_definescat": "ដាក់ឈ្មោះឱ្យចំណាត់ថ្នាក់ក្រុម៖ $1",
- "createtemplate": "បង្កើតទំព័រគំរូ",
- "sf_createtemplate_namelabel": "ឈ្មោះទំព័រគំរូ៖",
- "sf_createtemplate_displaylabel": "បង្ហាញ​ស្លាក:",
- "sf_createtemplate_aggregationlabel": "ចំណងជើង​សម្រាប់​បញ្ជី:",
- "sf_createtemplate_outputformat": "ទ្រ់ង់ទ្រាយ​ទិន្នផល:",
- "sf_createtemplate_standardformat": "តារាង",
- "sf_createtemplate_infoboxformat": "ប្រអប់​ព័ត៌មាន​ចំហៀង",
- "sf_createtemplate_addfield": "បន្ថែម​វាល",
- "sf_createtemplate_deletefield": "លុបចេញ",
- "forms": "បែបបទ",
- "sf_forms_docu": "ទម្រង់​ដូចតទៅនេះ មាន​នៅ​ក្នុង​វិគី​រួច​ហើយ​។",
- "sf_forminputs_restricted": "មានតែ​អភិបាលប៉ុណ្ណោះ​ទើប​មាន​សិទ្ធិ​កែប្រែ​បាន",
- "createform": "បង្កើត មួយបែបបទ",
- "sf_createform_template": "ទំព័រគំរូ៖",
- "sf_createform_templatelabelinput": "ប្លាកគំរូខ្នាត (ជំរើស):",
- "sf_createform_field": "វាល:",
- "sf_createform_inputtypedefault": "(លំនាំដើម)",
- "sf_createform_formlabel": "ស្លាក​ទម្រង់:",
- "sf_createform_hidden": "ត្រូវបានលាក់",
- "sf_createform_removetemplate": "ដកទំព័រគំរូ​ចេញ",
- "sf_createform_addtemplate": "បន្ថែម​ទំព័រគំរូ:",
- "sf_createform_atend": "នៅ​ទីបញ្ចប់",
- "sf_createform_add": "បន្ថែម",
- "sf_createform_choosefield": "ជ្រើសរើស​វាល​ដើម្បី​បន្ថែម",
- "sf_createform_before": "មុនទំព័រគំរូ:",
- "sf_createform_additembeforesave": "អ្នក​ត្រូវតែ​បន្ថែម​ទំព័រគំរូ​យ៉ាងតិចមួយ​ទៅក្នុង​ទម្រង់​នេះ មុនពេល​អ្នក​អាច​រក្សា​វា​ទុក​។",
- "createcategory": "បង្កើតចំណាត់ថ្នាក់ក្រុម",
- "sf_createcategory_name": "ឈ្មោះចំណាត់ថ្នាក់ក្រុម៖",
- "sf_createcategory_defaultform": "បែបបទលំនាំដើម៖",
- "sf_createcategory_makesubcategory": "ដាក់​ចំណាត់ថ្នាក់ក្រុមរង​នេះ ទៅនឹង​ចំណាត់ថ្នាក់ក្រុម​ដទៃ (តាមបំណង):",
- "formstart": "បន្ថែមទំព័រ​ជាមួយ​ទម្រង់",
- "sf_formstart_badform": "កំហុស: គ្មាន​ទំព័រទម្រង់​ត្រូវ​បាន​រកឃើញ​នៅ $1 ទេ",
- "sf_formstart_createoredit": "បង្កើតឬកែប្រែ",
- "formedit": "កែប្រែបែបបទនេះ",
- "sf_formedit_createtitle": "បង្កើត $1៖ $2",
- "sf_viewform": "មើលបែបបទ",
- "sf_editsource": "កែប្រែកូដ",
- "sf_formedit_edittitle": "កែប្រែ $1: $2",
- "sf_formedit_formwarning": "ការព្រមាន: ទំព័រ​នេះ <a href=\"$1\">មាន​រួចហើយ</a> ប៉ុន្តែ​វា​មិនអាច​ប្រើប្រាស់​ទម្រង់​នេះ​បាន​ទេ​។",
- "sf_formedit_remove": "ដកចេញ",
- "sf_formedit_addanother": "បន្ថែមមួយផ្សេងទៀត",
- "sf_formedit_none": "ទទេ",
- "sf_formerrors_header": "បាន​មាន​កំហុស​ជាមួយ​ការបញ្ចូល​ទម្រង់​របស់​អ្នក, សូម​មើល​ខាងក្រោម",
- "sf_blank_error": "មិនអាចទទេទេ",
- "sf_bad_url_error": "ត្រូវតែ​មាន​ទ្រង់ទ្រាយ URL ត្រឹមត្រូវ ដែល​ផ្ដើមឡើង​ជាមួយ 'http'",
- "sf_bad_email_error": "ទម្រង់អាសយដ្ឋានអ៊ីមែល មិនត្រឹមត្រូវ",
- "sf_bad_number_error": "ត្រូវតែ​ជា​លេខ​ត្រឹមត្រូវ",
- "sf_bad_date_error": "ត្រូវតែ​ជា​កាលបរិច្ឆេទ​ត្រឹមត្រូវ",
- "uploadwindow": "ផ្ទុក​បង្អួច​ឡើង",
- "sf_deletionlog": "កំណត់ហេតុនៃការលុបចោល",
- "sf_property_isproperty": "នេះ​គឺជា​លក្ខណៈសម្បត្តិមួយ​នៃ​គំរូ $1 ។",
- "sf_property_allowedvals": "តម្លៃ​ចំនួន$1 ​សម្រាប់​លក្ខណៈសម្បត្តិ​នេះគឺ​៖",
- "sf_template_docu": "នេះ​គឺជា​ទំព័រគំរូ '$1' ។\nវា​នឹង​ត្រូវ​គេ​ហៅ​មកប្រើប្រាស់ នៅក្នុង​ទ្រង់ទ្រាយ​ដូចតទៅ៖",
- "sf_template_docufooter": "កែប្រែទំព័រ ដើម្បីឃើញអត្ថបទគំរូ ។",
- "sf_form_docu": "នេះ​គឺ​ជាបែប​បទ​​ '$1'​។ ដើម្បី​បន្ថែម​ទំព័រ​មួយ​ជាមួយ​បែប​បទ​​នេះ​ សូមវាយ​បញ្ចូល​ឈ្មោះ​ទំព័រ​ខាង​ក្រោម​។​ ប្រសិន​បើ​មានទំព័រ​ដែល​មានឈ្មោះ​នោះ​រួច​ហើយ​ អ្នក​នឹង​ត្រូវ​បាន​ផ្ញើ​ទៅ​កាន់​បែប​បទ​​មួយ​ដើម្បី​កែប្រែ​ទំព័រ​នោះ​។​",
- "sf_form_freetextlabel": "អត្ថបទ​សេរី​",
- "sf_category_hasdefaultform": "ចំណាត់ក្រុមនេះ ប្រើប្រាស់បែបបទ $1 ។",
- "sf_category_desc": "នេះ​គឺជា​ចំណាត់ថ្នាក់ក្រុម $1 ។",
- "sf_blank_namespace": "ចម្បង​"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/kn.json b/SemanticForms/i18n/kn.json
deleted file mode 100644
index 186d4d8c..00000000
--- a/SemanticForms/i18n/kn.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Nayvik"
- ]
- },
- "templates": "ಟೆಂಪ್ಲೇಟು",
- "sf_createtemplate_deletefield": "ಅಳಿಸು",
- "sf_createform_add": "ಸೇರಿಸು"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ko.json b/SemanticForms/i18n/ko.json
deleted file mode 100644
index bb063190..00000000
--- a/SemanticForms/i18n/ko.json
+++ /dev/null
@@ -1,199 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Hym411",
- "아라"
- ]
- },
- "semanticforms-desc": "시맨틱 데이터 추가와 편집을 위한 양식",
- "specialpages-group-sf_group": "시맨틱 양식",
- "createproperty": "속성 만들기",
- "sf-createproperty-with-name": "속성 만들기: $1",
- "sf_createproperty_linktoform": "이 속성은 양식을 사용하는 문서로 연결합니다:",
- "sf_createproperty_allowedvalsinput": "이 속성이 특정 값을 가질 수 있도록 허용하려면 쉼표로 구분하여 허용하는 값 목록을 입력하세요 (값이 쉼표로 포함되어 있으면 \"\\,\"로 바꾸세요):",
- "sf_createproperty_propname": "속성 이름:",
- "sf_createproperty_proptype": "유형:",
- "templates": "틀 목록",
- "sf_templates_docu": "다음 틀은 위키에 존재합니다.",
- "sf_templates_definescat": "분류 정의: $1",
- "createtemplate": "틀 만들기",
- "sf-createtemplate-with-name": "틀 만들기: $1",
- "sf_createtemplate_namelabel": "틀 이름:",
- "sf_createtemplate_multipleinstance": "이 틀은 문서에 여러 번 포함할 수 있습니다.",
- "sf_createtemplate_connectingproperty": "문서의 나머지 부분에 틀의 필드를 연결하는 속성 이름:",
- "sf_createtemplate_categorylabel": "틀에 의해 정의한 분류 (선택 사항):",
- "sf_createtemplate_templatefields": "틀 필드",
- "sf_createtemplate_fieldsdesc": "필드 이름이 더 이상 필요하지 않는 이 틀에 필드를 갖기 위해서는 단순히 실제 이름 대신 이름으로 각 필드의 인덱스(예를 들어 1, 2, 3, 그 외)를 입력하세요.",
- "sf_createtemplate_fieldname": "입력란 이름:",
- "sf_createtemplate_displaylabel": "보여줄 레이블:",
- "sf_createtemplate_semanticproperty": "시맨틱 속성:",
- "sf_createtemplate_fieldislist": "이 입력란은 쉼표로 구분하여 값 목록을 저장할 수 있습니다",
- "sf_createtemplate_aggregation": "집합",
- "sf_createtemplate_aggregationdesc": "이 틀을 사용하여 모든 문서에 나타내려면 해당 문서를 가리키는 특정 속성을 가진 모든 문서를 다음 해당 속성을 지정하세요:",
- "sf_createtemplate_aggregationlabel": "목록 제목:",
- "sf_createtemplate_outputformat": "출력 형식:",
- "sf_createtemplate_standardformat": "표",
- "sf_createtemplate_infoboxformat": "정보 상자 보기",
- "sf_createtemplate_plainformat": "일반 텍스트",
- "sf_createtemplate_sectionsformat": "부분",
- "sf_createtemplate_addfield": "필드 추가",
- "sf_createtemplate_deletefield": "삭제",
- "forms": "양식 목록",
- "sf_forms_docu": "다음 양식은 위키에 존재합니다.",
- "sf_forminputs_mandatory": "이 입력에 대한 값을 입력해야 합니다",
- "sf_forminputs_restricted": "관리자만 이 입력을 편집할 수 있습니다",
- "sf_forminputs_class": "이 입력에 대한 HTML \"클래스\" 특성",
- "sf_forminputs_default": "이 입력에 대한 기본값",
- "sf_forminputs_preload": "이 입력의 기본값이 될 내용의 위키 문서",
- "sf_forminputs_property": "이 필드에 해당하는 시맨틱 속성",
- "sf_forminputs_size": "문자에서 텍스트 필드의 크기",
- "sf_forminputs_maxlength": "이 필드의 텍스트의 최대 허용 길이",
- "sf_forminputs_placeholder": "사용자가 클릭할 때까지 입력에 나타나는 도움말 텍스트",
- "sf_forminputs_uploadable": "이 입력 옆에 \"{{int:upload}}\" 링크 놓기",
- "sf_forminputs_defaultfilename": "올린 파일에 대한 기본 파일 이름",
- "sf_forminputs_rows": "이 입력에 대한 행 수",
- "sf_forminputs_cols": "이 입력에 대한 열 수",
- "sf_forminputs_autogrow": "텍스트의 경계를 초과하면 크기가 늘어나도록 이 입력을 설정",
- "sf_forminputs_valuesfromproperty": "위키에서 값 속성은 값의 이 입력의 설정이어야 합니다",
- "sf_forminputs_valuesfromcategory": "문서 분류는 값의 이 입력의 설정이어야 합니다",
- "sf_forminputs_valuesfromnamespace": "문서 이름공간은 값의 이 입력의 설정이어야 합니다",
- "sf_forminputs_valuesfromconcept": "이 문서의 입력 집합이어야 하는 시맨틱 미디어위키 \"개념\" 문서",
- "sf_forminputs_valuesfromurl": "구조화된 데이터를 유지하는 URL은 값의 이 입력의 설정이어야 합니다",
- "sf_forminputs_values": "이 입력에 대한 값의 설정은 쉼표로 구분합니다",
- "sf_forminputs_list": "이 입력이 값의 목록을 유지할 수 있도록 표시합니다",
- "sf_forminputs_delimiter": "이 입력이 값의 목록으로 유지하면 필드 값 사이의 구분자",
- "sf_forminputs_remoteautocompletion": "원격 자동 완성 사용",
- "sf_forminputs_existingvaluesonly": "이미 목록 값만 허용",
- "sf_forminputs_showonselect": "특정 값을 선택했을 때에만 보여줄 문서 요소 (예: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "이 목록 상자의 행 단위 높이",
- "sf_forminputs_includetimezone": "시간대에 대한 입력을 포함",
- "sf_forminputs_topcategory": "이 집합 분류의 상위 분류 (필수)",
- "sf_forminputs_hideroot": "상위 분류 숨기기",
- "sf_forminputs_depth": "처음 보여줄 분류의 수준 수",
- "sf_forminputs_height": "이 입력에 대한 픽셀 단위 높이",
- "sf_forminputs_width": "이 입력에 대한 픽셀 단위 너비",
- "createform": "양식 만들기",
- "sf-createform-with-name": "양식 만들기: $1",
- "sf_createform_nameinput": "양식 이름",
- "sf_createform_nameinputdesc": "(양식은 일반적으로 주요 틀로 같은 이름이 주어집니다):",
- "sf_createform_template": "틀:",
- "sf_createform_templatelabelinput": "틀 레이블 (선택 사항):",
- "sf_createform_allowmultiple": "만든 문서에서 이 틀을 여러 번 사용하는 인스턴스를 허용",
- "sf_createform_field": "입력란",
- "sf_createform_fieldprop": "이 필드는 $2 유형의 $1 속성을 정의합니다.",
- "sf_createform_fieldproplist": "이 필드는 $2 유형의 $1 속성을 가진 요소의 목록을 정의합니다.",
- "sf_createform_fieldpropunknowntype": "이 필드는 지정하지 않은 유형의 $1 속성을 지정합니다.",
- "sf_createform_inputtype": "입력 종류:",
- "sf_createform_inputtypedefault": "(기본값)",
- "sf_createform_formlabel": "양식 레이불:",
- "sf_createform_hidden": "숨겨짐",
- "sf_createform_removetemplate": "틀 제거",
- "sf_createform_addtemplate": "틀 추가:",
- "sf_createform_atend": "끝으로",
- "sf_createform_add": "추가",
- "sf_createform_choosefield": "추가할 입력란 선택",
- "sf_createform_pagesection": "문서 문단:",
- "sf_createform_addsection": "문단 추가",
- "sf_createform_removesection": "문단 제거",
- "sf_createform_before": "틀 이전:",
- "sf_createform_addelements": "요소 추가",
- "sf_createform_hiddensection": "이 입력은 양식에서 숨겨져 있습니다",
- "sf_createform_sectionlevel": "문단 수준:",
- "sf_createform_sectionname": "문단 이름",
- "sf_createform_additembeforesave": "저장하기 전에 이 양식에 하나 이상의 틀을 추가해야 합니다.",
- "sf_createform_otherparameters": "다른 변수",
- "createcategory": "분류 만들기",
- "sf-createcategory-with-name": "분류 만들기: $1",
- "sf_createcategory_name": "분류 이름:",
- "sf_createcategory_defaultform": "기본 양식:",
- "sf_createcategory_makesubcategory": "다른 분류의 이 하위 분류 만들기 (선택 사항):",
- "createclass": "클래스 만들기",
- "sf_createclass_docu": "단일 클래스에 대한 속성, 틀, 양식과 분류를 만드려면 여기에 데이터를 모두 입력하세요. 더 많은 옵션은 $1의 각 문서를 사용하세요.",
- "sf_createclass_allowedvalues": "허용한 값:",
- "sf_createclass_listofvalues": "값 목록입니까?",
- "sf_createclass_nameinput": "양식 이름:",
- "sf_createclass_missingvalues": "모든 필수 필드를 기입하지 않았습니다.",
- "sf_createclass_success": "속성, 틀, 양식과 분류를 만들 것입니다.",
- "sf_createclass_create": "만들기",
- "formstart": "양식 시작",
- "sf_formstart_badform": "오류: \"$1\" 문서에서 찾은 양식이 없습니다.",
- "sf_formstart_badtitle": "오류: \"$1\"(은)는 잘못된 문서 제목입니다.",
- "sf_formstart_docu": "여기에 \"$1\" 양식으로 편집할 문서 이름을 입력하세요.\n이 문서가 이미 존재하면 해당 문서를 편집하는 양식에 보냅니다.\n존재하지 않으면 문서를 추가하는 양식에 보냅니다.",
- "sf_formstart_noform_docu": "여기에 문서 이름을 입력하고 문서를 편집할 양식을 선택하세요.\n이 문서가 이미 존재하면 해당 문서를 편집하는 양식에 보냅니다.\n존재하지 않으면 문서를 추가하는 양식에 보냅니다.",
- "sf_formstart_createoredit": "만들거나 편집",
- "formedit": "양식으로 편집",
- "sf_formedit_createtitle": "$1: $2 만들기",
- "sf_formedit_createtitlenotarget": "$1 만들기",
- "sf_formedit_badurl": "양식으로 편집하는 문서입니다. URL에 양식 이름과 대상 문서 둘 다 지정해야 합니다.\n\"Special:FormEdit?form=<양식 이름>&target=<대상 문서>\" 또는 \"Special:FormEdit/<양식 이름>/<대상 문서>\" 처럼 보여야 합니다.",
- "sf_formedit_altforms": "다음 양식 중 하나로 이 문서를 대신 추가할 수 있습니다:",
- "sf_formedit_altformsonly": "이 문서에 추가할 다음 양식 중 하나를 선택하세요:",
- "sf_formcreate": "양식으로 만들기",
- "sf_viewform": "양식 보기",
- "sf_editsource": "원본 편집",
- "sf_formedit_edittitle": "$1: $2 편집",
- "sf_formedit_morethanoneform": "'''경고:''' 하나 이상의 기본 양식은 이 문서에 지정되어 있습니다.",
- "sf_formedit_formwarning": "경고: 이 문서는 <a href=\"$1\">이미 존재하지만</a> 이 양식을 사용하지 않습니다.",
- "sf_formedit_mismatchedbrackets": "경고: 이 문서는 닫혀있지 않은 소괄호나 대괄호를 포함하기 때문에 문서가 양식에서 올바르게 처리되지 않습니다. 계속하기 전에 <a href=\"$1\">원본 텍스트에서 오류를 고치세요</a>.",
- "sf_formedit_remove": "이 인스턴스 제거",
- "sf_formedit_addanotherabove": "이 인스턴스 위에 다른 인스턴스 추가",
- "sf_formedit_addanother": "또 추가",
- "sf_formedit_none": "없음",
- "sf_formedit_emptytitle": "오류: 빈 문서 제목에 삽입한 데이터 결과입니다.",
- "sf_formedit_hookerror": "오류: 미디어위키 확장 기능은 대상 문서를 수정할 수 없습니다.",
- "sf_formedit_saveandcontinueediting": "저장하고 계속",
- "sf_formedit_saveandcontinue_summary": "양식에서 \"$1\" 버튼을 사용하여 저장함",
- "sf_formedit_tooltip_saveandcontinueediting": "데이터를 저장하고 편집을 계속하기",
- "sf_autoedit_anoneditwarning": "'''주의''': 로그인하고 있지 않습니다. IP 주소가 문서 역사에 남게 됩니다.",
- "sf_autoedit_success": "$2 양식을 사용하여 [[$1]] 문서를 성공적으로 수정했습니다.",
- "sf_autoedit_fail": "[[$1]](을)를 수정하는 데 실패했습니다.",
- "sf_autoedit_notargetspecified": "지정한 대상 문서가 없습니다.",
- "sf_autoedit_invalidtargetspecified": "지정한 '''$1''' 대상 문서가 잘못되었습니다.",
- "sf_autoedit_invalidform": "'''$1'''(은)는 올바른 형식이 아닙니다.",
- "sf_autoedit_redirectlimitexeeded": "$1 양식에 대한 최대 넘겨주기 제한을 초과했습니다.",
- "sf_autoedit_invalidredirecttarget": "$1(은)는 $2 양식에 대한 잘못된 넘겨주기 대상입니다.",
- "sf_autoedit_invalidpreloadspecified": "지정한 $1 미리 불러온 문서가 잘못되었습니다.",
- "sf_autoedit_redlinkexists": "$1(은)는 이미 존재합니다.",
- "sf_autoedit_noformfound": "지정한 양식이 없습니다.",
- "sf_autoedit_toomanyformsfound": "문서에 사용할 수 있는 하나 이상의 양식입니다.",
- "sf_autoedit_readonly": "데이터베이스가 현재 수정이 잠겨있습니다. 이유: $1",
- "sf_autoedit_nosemanticform": "$2 문서에 $2 양식을 가져올 수 없습니다. 자세한 사항에 대해서는 [[{{#special:FormEdit}}/$2/$1]](을)를 참고하십시오.",
- "sf_autoedit_summary": "$1 문서에서 자동으로 편집합니다.",
- "sf-autoedit-wait": "기다리세요...",
- "runquery": "쿼리 실행",
- "sf_runquery_badurl": "URL에 양식 이름을 지정해야 합니다.\nURL은 \"Special:RunQuery/<양식 이름>\"같이 보여야 합니다.",
- "sf_runquery_title": "쿼리 실행: $1",
- "sf_runquery_additionalquery": "추가 쿼리",
- "sf_formerrors_header": "양식 입력에 오류가 났습니다. 아래를 참고하세요.",
- "sf_too_few_instances_error": "이 틀의 적어도 {{PLURAL:$1|인스턴스 한 개|인스턴스 $1개}}가 있어야 합니다.",
- "sf_too_many_instances_error": "이 틀의 {{PLURAL:$1|인스턴스 한 개|인스턴스 $1개}}보다 많지 않아야 합니다.",
- "sf_blank_error": "비워둘 수 없습니다",
- "sf_bad_url_error": "\"http\"로 시작하는 올바른 URL 형식이어야 합니다",
- "sf_bad_email_error": "올바른 이메일 주소 형식이어야 합니다",
- "sf_bad_number_error": "올바른 숫자여야 합니다",
- "sf_bad_date_error": "올바른 날짜여야 합니다",
- "uploadwindow": "올리기 창",
- "sf_deletionlog": "삭제 기록",
- "sf-preview-header": "양식 미리 보기",
- "sf-preview-note": "양식을 사용할 때 이 같이 보입니다:",
- "sf-pageschemas-pagenameformula": "문서 이름 공식:",
- "sf-pageschemas-createtitle": "새 문서에 대한 양식 제목:",
- "sf-pageschemas-edittitle": "기존 문서에 대한 양식 제목:",
- "sf-pageschemas-inputtype": "입력 형식 (기본값으로 설정하려면 비워두세요):",
- "sf-pageschemas-otherparams": "변수 이름과 값을 key=value와 같은 쌍을 쉼표로 구분하여 입력하세요. (값에 쉼표를 포함하면, \"\\,\"로 바꾸세요) 예를 들어: $1",
- "sf_property_isproperty": "$1 유형의 속성입니다.",
- "sf_property_linkstoform": "$1 양식을 사용하는 문서로 링크합니다.",
- "sf_property_allowedvals": "{{PLURAL:$1|이 양식에 대해 허용하는 값}}:",
- "sf_template_docu": "\"$1\" 틀입니다.\n다음 형식으로 호출해야 합니다:",
- "sf_template_docufooter": "틀 텍스트를 보려면 문서를 편집하세요.",
- "sf_form_docu": "\"$1\" 양식입니다.\n이 양식으로 문서를 만드려면 아래에 문서 이름을 입력하세요.\n이름이 이미 존재하는 문서이면 해당 문서를 편집할 양식에 보냅니다.",
- "sf_form_freetextlabel": "자유 텍스트",
- "sf_category_hasdefaultform": "이 분류는 $1 양식을 사용합니다.",
- "sf_category_desc": "$1 분류입니다.",
- "sf_blank_namespace": "주요",
- "right-viewedittab": "양식에서 편집할 문서에 \"{{int:edit}}\" 탭을 보여줍니다",
- "right-editrestrictedfields": "제한된 양식 입력란 편집",
- "right-createclass": "새 시맨틱 클래스 만들기",
- "action-createclass": "새 시맨틱 클래스 만들기",
- "action-editrestrictedfields": "제한된 양식 입력란 편집",
- "action-viewedittab": "양식에서 편집할 문서에 \"{{int:edit}}\" 탭을 보이기"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/kri.json b/SemanticForms/i18n/kri.json
deleted file mode 100644
index ca32bdbf..00000000
--- a/SemanticForms/i18n/kri.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jose77"
- ]
- },
- "sf_createtemplate_deletefield": "Dilit"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/krj.json b/SemanticForms/i18n/krj.json
deleted file mode 100644
index fb59e0dc..00000000
--- a/SemanticForms/i18n/krj.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jose77"
- ]
- },
- "sf_createtemplate_deletefield": "Para",
- "sf_createform_template": "Template"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ksh.json b/SemanticForms/i18n/ksh.json
deleted file mode 100644
index f7fe5fda..00000000
--- a/SemanticForms/i18n/ksh.json
+++ /dev/null
@@ -1,127 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Purodha"
- ]
- },
- "semanticforms-desc": "Fommulaare för Semantesch Date dabei ze donn, un och ze ändere",
- "specialpages-group-sf_group": "Semantesch Fommulaare",
- "createproperty": "Donn en neuje Eijeschaff aanlääje",
- "sf_createproperty_linktoform": "Die Eijeschaff deiht dann op Sigge lingke, di hee dat Fommullaa bruche:",
- "sf_createproperty_allowedvalsinput": "Wann för die Eijeschaff bloß janz beshtemmpte Wääte müjjelesch sin, dann donn die hee op_leste. Schriif jede Wäät einzel op, un maach e Komma dozwsche. Wann De ene Wäät häs, woh e Komma en däm Wäät sellver dren enthallde es, donn för dat Komma ene <code>\\</code> schriive, alsu esu jet wi „<code>Mätze\\, Läffelle\\, un Jaffelle</code>“:",
- "sf_createproperty_propname": "Dä Eijeschaff ier Name:",
- "sf_createproperty_proptype": "Zoot:",
- "templates": "Schablone",
- "sf_templates_docu": "Hee di Schablone jidd_et em Wiki:",
- "sf_templates_definescat": "beshtemmp de Saachjrop: $1",
- "createtemplate": "Donn en Schablohn aanlääje",
- "sf_createtemplate_namelabel": "Dä Schabloon iere Name:",
- "sf_createtemplate_connectingproperty": "Dä Name vun dä Eijeschaff, öm de Fälder vun heh dä SChablohn mem Räß vun dä Sigg ze verbenge:",
- "sf_createtemplate_categorylabel": "Met dä Schabloon beschrevve Saachjropp, wann_er ein doh es:",
- "sf_createtemplate_templatefields": "Felder vun de Schablohn",
- "sf_createtemplate_fieldsdesc": "Öm Felder en dä Schabloon ze han, moß De kein Name för di Felder mieh aanjevve. Et es jenooch, dänne ier Nommere ze weße, donn eifach 1, 2, 3, un esu wigger aanjevve, aan däm Plaz för de Name.",
- "sf_createtemplate_fieldname": "Dä Name för dat Feld:",
- "sf_createtemplate_displaylabel": "För Aanzezeije, de Opschreff för dat Feld:",
- "sf_createtemplate_semanticproperty": "Semantesch Eijeschaff:",
- "sf_createtemplate_fieldislist": "En dämm Feld kann en Leß met Wääte shtonn, met Kommas dozwesche",
- "sf_createtemplate_aggregation": "Aansammlong",
- "sf_createtemplate_aggregationdesc": "Öm op jede Sigg, di di Schabloon he bruch, all de Sigge opzeleste, di_j_en beshtemmpte Eijeschaff han, di op hee di Sigg zeije deiht, donn jenou di Eijeschaff hee dronger aanjevve:",
- "sf_createtemplate_aggregationlabel": "De Överschreff för de Leß:",
- "sf_createtemplate_outputformat": "Dat Fommaat för et Ußjävve:",
- "sf_createtemplate_standardformat": "Shtanndat",
- "sf_createtemplate_infoboxformat": "Ene Kaste op de rääschte Sigg",
- "sf_createtemplate_addfield": "E Feld dobei donn",
- "sf_createtemplate_deletefield": "Fottschmiiße",
- "forms": "Fommulaare",
- "sf_forms_docu": "Hee di Fommulaare ham_mer em Wiki.",
- "sf_forminputs_mandatory": "Nüüdesch",
- "sf_forminputs_restricted": "Bloß de Wiki-Köbesse künne hee jet draan ändere.",
- "sf_forminputs_listboxsize": "De Aanzahl Reihje för de Hühde vun dä Leß",
- "sf_forminputs_includetimezone": "Donn e Feld dobei för de Zickzohn enzejävve",
- "sf_forminputs_topcategory": "De övverjeodente Saachjropp för heh dä Knubbel vun Saachjroppe (nüüdesch)",
- "sf_forminputs_height": "De Hühde vun heh däm Fäld en Pixelle",
- "sf_forminputs_width": "De Breedt vun heh däm Fäld en Pixelle",
- "createform": "Donn e Fommulaa aanlääje",
- "sf_createform_nameinput": "Dä Name för dat Fommulaa",
- "sf_createform_nameinputdesc": "(För jewöhnlesch deiht mer dat Fommulaa noh dä Houp-Schabloon deufe, woh et Date erin brängk):",
- "sf_createform_template": "Schabloon:",
- "sf_createform_templatelabelinput": "Dä Name vun dä Schablon, wann ein jebruch weed:",
- "sf_createform_allowmultiple": "Donn zwesche noll un jede Aanzahl Oproofe vun dä Schabloon hee, en dä neu aanjelaate Sigg zohlohße",
- "sf_createform_field": "Feld:",
- "sf_createform_fieldprop": "Dat Feld beschrief de Eijeschaff „$1“. Se es vun dä Zoot „$2“.",
- "sf_createform_fieldproplist": "Dat Feld beschrief en Leß met Ellemänte met dä Eijeschaff „$1“, vun dä Zoot „$2“.",
- "sf_createform_fieldpropunknowntype": "Dat Feld beschrief de Eijeschaff „$1“, wat fö_n Zoot Eijeschaff dat dat es, es nit jesaat.",
- "sf_createform_inputtype": "De Zoot vun dä Date för enzejävve:",
- "sf_createform_inputtypedefault": "(dä Schtandatt)",
- "sf_createform_formlabel": "Däm Fommulaa singe Name:",
- "sf_createform_hidden": "Verschtoche",
- "sf_createform_removetemplate": "Maach de Schabloon fott",
- "sf_createform_addtemplate": "Donn en Schabloon dobei:",
- "sf_createform_atend": "Aam Engk",
- "sf_createform_add": "Donn dobei",
- "sf_createform_choosefield": "Donn a Feld ußwähle, wat dobei kumme sull",
- "sf_createform_before": "Vör dä Schabloon:",
- "sf_createform_additembeforesave": "Do moß ald winnishßdens ein Schabloon en dat Fommulaa enjedraare hann, ih dat De jet afspeishere kanns.",
- "createcategory": "Donn en Saachjropp aanlääje",
- "sf_createcategory_name": "Dä Saachjropp iere Name:",
- "sf_createcategory_defaultform": "Dat Shtandatt-Fommulaa:",
- "sf_createcategory_makesubcategory": "Donn di Saachjropp als Ongerjropp endraare en dä Saachjropp (udder lohß leddisch):",
- "createclass": "Donn en Zoot ov en Klaß aanlääje",
- "sf_createclass_docu": "Donn hee all de Date enjevve, öm de Eijeschaffte, de SChabloon, dat Fommulaa, un de Saachjropp för en einzel Zoot ov Klass aanzelääje. Wann de mieh Müjjeleschkeite wells, donn de Sigg $1 doför nämme.",
- "sf_createclass_allowedvalues": "Zohjelohße Wääte",
- "sf_createclass_listofvalues": "Leß met Wääte",
- "sf_createclass_missingvalues": "Nit alle vun de nüüdejje Felder sin ußjeföllt.",
- "sf_createclass_success": "De Eijeschaffte, en Schabloon, dat Fommulaa, un de Saachjrupp wäde aanjelaat.",
- "formstart": "Donn en Sigg dobei övver e Fommullaa",
- "sf_formstart_badform": "Ene Fähler es opjetrodde: Mer han kei Fommullaa „$1“ jefonge.",
- "sf_formstart_badtitle": "Fähler: „$1“ es ene onjöltige Sigggetittel.",
- "sf_formstart_docu": "Jiff hee dä Name vun dä Sigg en, di mem Fommulaa „$1“ beärbeidt wäde sull. Wann de Sigg ald doh es, küß De op dat Fommullaa, för di Sigg ze ändere. Söns küß De op dat Fommullaa för di Sigg aanzelääje.",
- "sf_formstart_noform_docu": "Jiff hee dä Name vun däm Sigg en, un donn dat Fommulaa ußsööke woh drövver di Sigg beärbeidt wäde sull. Wann di Sigg ald doh es, küß De op dat Fommullaa, för di Sigg ze ändere. Söns küß De op dat Fommullaa för di Sigg aanzelääje.",
- "sf_formstart_createoredit": "Dobei donn udder Ändere",
- "formedit": "Date övver e Fommullaa änndere",
- "sf_formedit_createtitle": "Donn $1 dobei: $2",
- "sf_formedit_createtitlenotarget": "Donn $1 aanlääje",
- "sf_formedit_badurl": "Date es de Sigg för Date dobei ze donn. Do moß ene Name för e Fommulaa un för en Sigg an dä ierem <i lang=\"en\">URL</i> aanjevve. Dat sullt eu ähnlesch ußsinn, wieh: <code>{{#special:addData}}?form=''<Fomullaa_Name>''&target=''<Sigge_Name>''</code>, udder wi: <code>{{#special:addData}}/''<Fomullaa_Name >''/''<Sigge_Name>''</code>.",
- "sf_formedit_altforms": "Shtatt dämm kanns De di Sigg övver ein vun hee dä Fommulaare aanlääje:",
- "sf_formedit_altformsonly": "Donn ein vun dä Fommulaare ußwähle, öm di Sigg aanzelääje:",
- "sf_formcreate": "Övver e Fommulaa aanlääje",
- "sf_viewform": "Dat Fommullaa aanzeije",
- "sf_editsource": "Dä Quellkode Ändere",
- "sf_formedit_edittitle": "$1 Ändere: $2",
- "sf_formedit_morethanoneform": "Opjepaß: Dör di Sigg hee es mieh wie ein Shtandadt-Fommulaa ennjeshtallt.",
- "sf_formedit_formwarning": "Opjepaß: Di Sigg <a href=\"$1\">jidd_et aldt</a>, ävver se deiht hee dat Fommulaa nit bruche.",
- "sf_formedit_remove": "Fott nämme",
- "sf_formedit_addanother": "Donn noch mieh dobei",
- "sf_formedit_none": "Kei",
- "sf_formedit_emptytitle": "Fähler: De enjeföösh Daate sorrje för ene läddijje Tittel för di Sigg.",
- "sf_formedit_hookerror": "Fähler: En Zohsazprojramm vum MedijaWiki hät nit zohjelohße, di Ziel_Sigg ze ändere.",
- "sf_formedit_saveandcontinueediting": "Faßhallde un wigger maache",
- "sf_formedit_tooltip_saveandcontinueediting": "Donn de Daate avshpeishere un dann wigger draan schrieve",
- "sf_autoedit_anoneditwarning": "Opjepaß: Weil De nit enjelogg bes, weed Ding <i lang=\"en\">IP</i>-Adräß en dä Sigg ier Leß met de Versione faßjehallde wääde.",
- "sf_autoedit_success": "De Sigg [[$1]] es övver et Fommulaa $2 jeändert woode.",
- "runquery": "De Frooch loufe lohße",
- "sf_runquery_badurl": "Do moß en däm <i lang=\"en\">URL</i> ene Nahme för e Fommulaa aanjävve.\nDat süüht dann esu us, wi <code>{{#special:RunQuery}}/''<Fomullaa_Name >''</code>.",
- "sf_runquery_title": "De Frooch „<code>$1</code>“ loufe lohße",
- "sf_runquery_additionalquery": "Zohsäzlejje Frooch",
- "sf_formerrors_header": "Mer han Fähler jefonge en däm, wat De enjejovve häß. Süsch doh:",
- "sf_too_many_instances_error": "Mer künne nit mieh wi $1 Oproofe vun dä Schablohn han.",
- "sf_blank_error": "kam_mer nit leddisch lohße",
- "sf_bad_url_error": "moß et reschteje Fomaat för en <i lang=\"en\">URL</i> han un moß met <code>http</code> aanfange",
- "sf_bad_email_error": "moß et reschteje Fomaat för en <i lang=\"en\">e-mail</i>-Adräß hann",
- "sf_bad_number_error": "moß en reschteje Zahl sin",
- "sf_bad_date_error": "moß e reschtesch Dattum sin",
- "uploadwindow": "Dat Finster för zem Huhlaade",
- "sf_deletionlog": "Logbooch vum Sigge Verschteische",
- "sf_property_isproperty": "Dat ess_en Eijeschaff vun dä Zoot $1.",
- "sf_property_linkstoform": "Et hät ene Lengk op Sigge, di dat Fommulaa „$1“ verwende donn.",
- "sf_property_allowedvals": "{{PLURAL:$1|Dä einzijje müjjelesche Wäät för di Eijeschaff es:|De müjjelesche Wääte för di Eijeschaff sin:|Mer han kein müjjelesche Wääte för di Eijeschaff.}}",
- "sf_template_docu": "Dat es de Schabloon för „$1“, un dat Fommaat för se opzeroofe es:",
- "sf_template_docufooter": "Donn di Sigg zom Ändere oproofe, öm dä Schablone iere Enhalldt als Tex ze sinn ze krijje.",
- "sf_form_docu": "Dat hee de dat Fommullaa „$1“.\nÖm hee met en Sigg aanzelääje, donn unge dä Name för di Sigg endraare. Sullt di Sigg ald doh sin, küß De op dat Fommullaa för di Sigg ze ändere.",
- "sf_form_freetextlabel": "Freije Tex",
- "sf_category_hasdefaultform": "Hee di Saachjropp bruch dat Fommulaa „$1“.",
- "sf_category_desc": "Dat es de Saachjropp „$1“.",
- "sf_blank_namespace": "{{int:blanknamespace}}",
- "right-viewedittab": "„{{int:edit}}“-Lengk för Sigge, die mer övver Fommulaare ändere kann",
- "right-editrestrictedfields": "Beschrängk zohjänglijje Felder en Fommulaare ändere"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ku-latn.json b/SemanticForms/i18n/ku-latn.json
deleted file mode 100644
index cdaa850d..00000000
--- a/SemanticForms/i18n/ku-latn.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "George Animal"
- ]
- },
- "sf_createproperty_proptype": "Cure:",
- "createtemplate": "Şablonekî çêke",
- "sf_createtemplate_namelabel": "Navê şablonê:",
- "sf_createtemplate_standardformat": "Tablo",
- "sf_createtemplate_deletefield": "Jê bibe",
- "sf_createform_template": "Şablon:",
- "sf_createform_add": "Lê zêde bike",
- "sf_createcategory_name": "Navê kategorîyê:",
- "sf-autoedit-wait": "Bisekine..."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/kw.json b/SemanticForms/i18n/kw.json
deleted file mode 100644
index e59009bc..00000000
--- a/SemanticForms/i18n/kw.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Kernoweger",
- "Kw-Moon",
- "Nrowe"
- ]
- },
- "createtemplate": "Gwruthyl skantlyn",
- "sf_createform_template": "Skantlyn:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/lb.json b/SemanticForms/i18n/lb.json
deleted file mode 100644
index 1a287fda..00000000
--- a/SemanticForms/i18n/lb.json
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Les Meloures",
- "Robby",
- "Soued031"
- ]
- },
- "specialpages-group-sf_group": "Semantesch Formulairen",
- "sf_createproperty_propname": "Numm vun der Eegeschaft:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Schablounen",
- "sf_templates_docu": "Dës Schabloune gëtt et op dëser Wiki.",
- "sf_templates_definescat": "definéiert d'Kategorie: $1",
- "createtemplate": "Eng nei Schabloun maachen",
- "sf_createtemplate_namelabel": "Numm vun der Schabloun:",
- "sf_createtemplate_multipleinstance": "Dës Schabloun ka méi dacks an eng Säit dragesat ginn.",
- "sf_createtemplate_categorylabel": "Kategorie déi duerch eng Schabloun definéiert ass (fakultativ):",
- "sf_createtemplate_templatefields": "Schablounefelder",
- "sf_createtemplate_fieldname": "Numm vum Feld:",
- "sf_createtemplate_displaylabel": "Etikett weisen:",
- "sf_createtemplate_aggregation": "Resumé",
- "sf_createtemplate_aggregationlabel": "Titel fir d'Lëscht:",
- "sf_createtemplate_standardformat": "Tabell",
- "sf_createtemplate_sectionsformat": "Abschnitter",
- "sf_createtemplate_addfield": "Feld derbäisetzen",
- "sf_createtemplate_deletefield": "Läschen",
- "forms": "Formulairen",
- "sf_forms_docu": "Dës Formulaire gëtt et op dëser Wiki.",
- "sf_forminputs_mandatory": "Obligatoresch",
- "sf_forminputs_restricted": "Nëmmen Administrateure kënnen dëst Feld änneren",
- "sf_forminputs_size": "D'Gréisst vum Textfeld (an Zeechen)",
- "sf_forminputs_maxlength": "Déi maximal erlaabt Längt vum Text an dësem Feld",
- "sf_forminputs_defaultfilename": "De Standard Numm fir de eropgeluede Fichieren",
- "sf_forminputs_existingvaluesonly": "Nëmme Wäerter zouloossen déi schonn an der Lëscht sinn",
- "createform": "E Formulaire uleeën",
- "sf-createform-with-name": "Formulaire uleeën: $1",
- "sf_createform_nameinput": "Numm vum Formulaire",
- "sf_createform_template": "Schabloun:",
- "sf_createform_templatelabelinput": "Etikett vun der Schabloun (fakultativ)",
- "sf_createform_field": "Feld:",
- "sf_createform_inputtypedefault": "(Standardwert)",
- "sf_createform_formlabel": "Etikett vum Formulaire:",
- "sf_createform_hidden": "Verstoppt",
- "sf_createform_removetemplate": "Schablon ewechhuelen",
- "sf_createform_addtemplate": "Schabloun derbäisetzen:",
- "sf_createform_atend": "Um Enn",
- "sf_createform_add": "Derbäisetzen",
- "sf_createform_choosefield": "Sicht e Feld eraus fir derbäizesetzen",
- "sf_createform_pagesection": "Abschnitt vun der Säit:",
- "sf_createform_addsection": "Abschnitt derbäisetzen",
- "sf_createform_removesection": "Abschnitt ewechhuelen",
- "sf_createform_before": "Virun d'Schabloun:",
- "sf_createform_addelements": "Elementer derbäisetzen",
- "sf_createform_sectionlevel": "Niveau vum Abschnitt:",
- "sf_createform_sectionname": "Numm vum Abschnitt",
- "sf_createform_additembeforesave": "Dir musst mindestens eng Schabloun an dëser Formulaire drasetzen ier Dir e späichere kënnt.",
- "sf_createform_otherparameters": "Aner Parameter",
- "createcategory": "Eng Kategorie maachen",
- "sf-createcategory-with-name": "Kategorie uleeën: $1",
- "sf_createcategory_name": "Numm vun der Kategorie:",
- "sf_createcategory_defaultform": "Standard-Formulaire:",
- "sf_createcategory_makesubcategory": "Aus dëser Kategorie eng Ënnerkategorie vun enger anerer Kategorie maachen (optional):",
- "sf_createclass_allowedvalues": "Erlaabt Wäerter:",
- "sf_createclass_listofvalues": "Lëscht vun de Wäerter?",
- "sf_createclass_nameinput": "Numm vum Formulaire:",
- "sf_createclass_missingvalues": "Et goufen net all erfuederlech Felder ausgefëllt.",
- "sf_createclass_create": "Uleeën",
- "formstart": "Säit mat engem Formulaire derbäisetzen",
- "sf_formstart_badform": "Feeler: et gouf keng Formulaire-Säit op $1 fonnt.",
- "sf_formstart_badtitle": "Feeler: \"$1\" ass kee valaben Titel fir eng Säit",
- "sf_formstart_createoredit": "Uleeën oder änneren",
- "formedit": "Formulaire änneren",
- "sf_formedit_createtitle": "$1: $2 uleeën",
- "sf_formedit_createtitlenotarget": "$1 uleeën",
- "sf_formedit_altforms": "Dir kënnt dës Säit och mat engem vun dëse Formulairen derbäisetzen:",
- "sf_formedit_altformsonly": "Sicht w.e.g. e vun dëse Formulairen eraus fir dës Säit derbäizesetzen:",
- "sf_formcreate": "Mat engem Formulaire gemaach",
- "sf_viewform": "Formulaire weisen",
- "sf_editsource": "Quelltext änneren",
- "sf_formedit_edittitle": "Ännert $1: $2",
- "sf_formedit_formwarning": "Opgepasst: Dës Säit <a href=\"$1\">gëtt et schonn</a>, awer si benotzt dëse Formulaire net.",
- "sf_formedit_remove": "Dës Instanz ewechhuelen",
- "sf_formedit_addanother": "Nach een derbäisetzen",
- "sf_formedit_none": "Keen",
- "sf_formedit_emptytitle": "Feeler: D'Donnéeën déi agi goufe féieren zu engem eidele Säitentitel.",
- "sf_formedit_saveandcontinueediting": "Späicheren a virufueren",
- "sf_formedit_tooltip_saveandcontinueediting": "Date späicheren a mam Ännere virufueren",
- "sf_autoedit_anoneditwarning": "Opgepasst: Dir sidd net ageloggt. Dowéinst gëtt amplaz vun engem Benotzernumm Är IP Adress am Historique vun dëser Säit gespäichert.",
- "sf_autoedit_success": "[[$1]] gouf mat Hëllef vum Formulaire $2 geännert",
- "sf_autoedit_invalidform": "'''$1''' ass kee valabele Formulaire.",
- "sf_autoedit_redlinkexists": "$1 gëtt et schonn.",
- "sf_autoedit_noformfound": "Kee Formulaire uginn.",
- "sf_autoedit_toomanyformsfound": "Fir dës Säit gëtt et méi wéi ee Formulaire.",
- "sf_autoedit_readonly": "D'Datebank ass elo fir Ännerunge gespaart. Grond: $1",
- "sf_autoedit_summary": "Automatesch vun der Säit $1 geännert.",
- "sf-autoedit-wait": "Waart w.e.g. ...",
- "runquery": "Ufro ausféieren",
- "sf_runquery_title": "ausféiere vu der Ufro: $1",
- "sf_runquery_additionalquery": "Zousätzlech Ufro",
- "sf_formerrors_header": "Et ware Feeler andeem wat Dir an de Formulaire aginn hutt; kuckt hei ënnendrënner",
- "sf_blank_error": "Däerf net eidel sinn!",
- "sf_bad_url_error": "muss de korrekten URL-format hunn, a mat 'http' ufänken",
- "sf_bad_email_error": "muss e valabelen E-Mailadresse-Format hunn",
- "sf_bad_number_error": "muss eng valabel Zuel sinn",
- "sf_bad_date_error": "muss e gëltegen Datum sinn",
- "uploadwindow": "Fënster fir eropzelueden",
- "sf_deletionlog": "Logbuch vum Läschen",
- "sf-preview-note": "Sou gesäit de Formulaire aus wann e benotzt gëtt:",
- "sf-pageschemas-createtitle": "Numm vum Formulaire fir nei Säiten:",
- "sf-pageschemas-edittitle": "Numm vum Formulaire fir Säiten déi et scho gëtt:",
- "sf_property_linkstoform": "Et ass mat Säite verlinkt déi de Formulaire $1 benotzen.",
- "sf_property_allowedvals": "{{PLURAL:$1|Den erlaabte Wäert fir dës Eegeschaft ass|Déi erlaabt Wäerter fir dës Eegeschaft sinn}}:",
- "sf_template_docu": "Dëst ass d''$1'-Schabloun.\nSi soll an dësem Format opgeruff ginn:",
- "sf_template_docufooter": "Ännert d'Säit fir den Text vun der Schabloun ze gesinn",
- "sf_form_freetextlabel": "Fräien Text",
- "sf_category_hasdefaultform": "Dës Kategorie benotzt de Formelär $1.",
- "sf_category_desc": "Dëst ass d'$1 Kategorie.",
- "sf_blank_namespace": "Haapt",
- "right-viewedittab": "\"{{int:edit}}\"-Tab fir Säiten, déi duerch e Formlaire geännert kënne ginn, weisen"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/li.json b/SemanticForms/i18n/li.json
deleted file mode 100644
index 8ba773d7..00000000
--- a/SemanticForms/i18n/li.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ooswesthoesbes"
- ]
- },
- "createproperty": "Eigesjap aanmake",
- "sf_createproperty_propname": "Naam eigesjap:",
- "sf_createproperty_proptype": "Type:",
- "templates": "Sjablone",
- "createtemplate": "'n Sjabloon aanmake",
- "forms": "Formelere",
- "createform": "Formeleer aanmake",
- "createcategory": "'n Categorie aanmake",
- "formstart": "Pazjena toevoge",
- "sf_formstart_createoredit": "Maak aan of bewirk",
- "formedit": "Bewèrke mit dit formeleer",
- "sf_formedit_createtitle": "Maak $1 aan: $2",
- "sf_editsource": "Brón bewèrke",
- "sf_formedit_edittitle": "$1 bewèrke: $2"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/lt.json b/SemanticForms/i18n/lt.json
deleted file mode 100644
index 37a53d97..00000000
--- a/SemanticForms/i18n/lt.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Domas"
- ]
- },
- "createproperty": "Sukurti savybę",
- "sf_createproperty_allowedvalsinput": "Jeigu norite, kad šis laukas galėtų įgyti tik konkrečias reikšmes, surašykite visas leistinas reikšmes, atskirtas kableliais (jeigu reikšmė turi kablelį, pakeiskite jį į „\\,“):",
- "sf_createproperty_propname": "Vardas:",
- "sf_createproperty_proptype": "Tipas:",
- "templates": "Šablonai",
- "sf_templates_docu": "Šiame sąraše pateikiami visi šablonai.",
- "sf_templates_definescat": "apibrėžia kategoriją: $1",
- "createtemplate": "Sukurti šabloną",
- "sf_createtemplate_namelabel": "Šablono vardas:",
- "sf_createtemplate_categorylabel": "Kategorija apibrėžiama šiuo šablonu (nebūtina):",
- "sf_createtemplate_templatefields": "Šablono laukai",
- "sf_createtemplate_fieldsdesc": "Šablonui reikšmės gali būti nurodomos ir be laukų vardų. Tokiu atvėju šioje formoje vietoj konkrečių laukų vardų turėtų būti nurodomi indeksai (pvz. 1, 2, 3 ir t. t.).",
- "sf_createtemplate_fieldname": "Lauko vardas:",
- "sf_createtemplate_displaylabel": "Rodomas užrašas:",
- "sf_createtemplate_semanticproperty": "Semantinė savybė:",
- "sf_createtemplate_fieldislist": "Šis laukas gali turėti kelias kableliais atskirtas reikšmes.",
- "sf_createtemplate_aggregation": "Savybių surinkimas",
- "sf_createtemplate_aggregationdesc": "Užpildykite šiuos laukus, jeigu norite, kad kiekviename šį šabloną naudojančiame puslapyje būtų pateiktas straipsnių, kurie konkrečia savybe rodo į tą puslapį, sąrašas:",
- "sf_createtemplate_aggregationlabel": "Sąrašo pavadinimas:",
- "sf_createtemplate_outputformat": "Išvedimo formatas:",
- "sf_createtemplate_standardformat": "Standartinis",
- "sf_createtemplate_infoboxformat": "Informacinis langas dešinėje",
- "sf_createtemplate_addfield": "Pridėti lauką",
- "sf_createtemplate_deletefield": "Pašalinti",
- "forms": "Formos",
- "sf_forms_docu": "Šiame sąraše pateikiamos visos formos.",
- "sf_forminputs_mandatory": "Privalomas",
- "sf_forminputs_restricted": "Apribotas (jį redaguoti gali tik sysop naudotojai)",
- "createform": "Sukurti formą",
- "sf_createform_nameinput": "Formos vardas (dažniausiai priimtina pavadinti pagrindinio formoje naudojamo šablono vardu):",
- "sf_createform_template": "Šablonas:",
- "sf_createform_templatelabelinput": "Šablono kortelės užrašas (nebūtinas):",
- "sf_createform_allowmultiple": "Leisti kelis (arba nė vieno) šio šablono vienetus sukurtame puslapyje",
- "sf_createform_field": "Laukas:",
- "sf_createform_fieldprop": "Šis laukas apibrėžia „$2“ tipo savybę „$1“.",
- "sf_createform_fieldproplist": "Šis laukas apibrėžia elementų turinčių „$2“ tipo savybę „$1“.",
- "sf_createform_fieldpropunknowntype": "Šis laukas apibrėžia neapibrėžto tipo savybę „$1“.",
- "sf_createform_inputtype": "Įvedimo tipas:",
- "sf_createform_inputtypedefault": "(pagrindinis)",
- "sf_createform_formlabel": "Formos užrašas:",
- "sf_createform_hidden": "Paslėptas",
- "sf_createform_removetemplate": "Pašalinti šabloną",
- "sf_createform_addtemplate": "Pridėti šabloną:",
- "sf_createform_atend": "Pabaigoje",
- "sf_createform_add": "Pridėti",
- "sf_createform_choosefield": "Pasirinkite pridedama lauką",
- "sf_createform_before": "Prieš šabloną:",
- "sf_createform_additembeforesave": "Prieš išsaugant šią formą, būtina pridėti bent vieną lauką.",
- "createcategory": "Sukurti kategoriją",
- "sf_createcategory_name": "Vardas:",
- "sf_createcategory_defaultform": "Pagrindinė forma:",
- "sf_createcategory_makesubcategory": "Padaryti kaip subkategoriją kitai kategorijai (nebūtina):",
- "formstart": "Sukurti puslapį naudojant formą",
- "sf_formstart_badform": "Klaida: nerastas naudojantis formą $1 puslapis",
- "sf_formstart_docu": "Įveskite puslapio vardą, kurį redaguosite su forma „$1“. Jeigu puslapis tokiu vardu egzistuoja, būsite nukreiptas į šio puslapio redagavimo formą. Kitu atveju, būsite nukreiptas į naujo puslapio kūrimo formą.",
- "sf_formstart_noform_docu": "Įveskite puslapio vardą ir pasirinkite formą kuria jį redaguosite. Jeigu puslapis tokiu vardu egzistuoja, būsite nukreiptas į šio puslapio redagavimo formą. Kitu atveju, būsite nukreiptas į naujo puslapio kūrimo formą.",
- "sf_formstart_createoredit": "Pridėti ar keisti",
- "formedit": "Redaguoti su forma",
- "sf_formedit_createtitle": "Pridėti $1: $2",
- "sf_formedit_badurl": "Šis puslapis skirtas naujų duomenų įvedimui. Jūs turite adrese nurodyti formos vardą ir norimą redaguoti puslapį. Adresas turėtų atrodyti kaip „Specialus:FormEdit?form=<formos vardas>&target=<puslapis>“ arba „Specialus:FormEdit/<formos vardas>/<puslapis>'“.",
- "sf_formedit_altforms": "Sukurti puslapį galite naudodami vieną iš šių formų:",
- "sf_formedit_altformsonly": "Pasirinkite vieną iš šių formų puslapio sukūrimui:",
- "sf_viewform": "Rodyti formą",
- "sf_editsource": "Redaguoti kodą",
- "sf_formedit_edittitle": "Redaguoti $1: $2",
- "sf_formedit_formwarning": "Dėmesio: Šis puslapis <a href=\"$1\">jau yra</a>, bet jis nenaudoja šios formos.",
- "sf_formedit_remove": "Pašalinti",
- "sf_formedit_addanother": "Pridėti kitą",
- "sf_formedit_none": "Nieko",
- "sf_formerrors_header": "Pildomoje formoje yra klaidų. Žiūrėkite žemiau",
- "sf_blank_error": "negali būti tuščias",
- "sf_bad_url_error": "turi būti taisyklinga nuoroda (URL), prasidedanti „http“",
- "sf_bad_email_error": "turi būti taisyklingas el. pašto adresas",
- "sf_bad_number_error": "turi būti skaičius",
- "sf_bad_date_error": "turi būti taisyklinga data",
- "uploadwindow": "Failo įkėlimo langas",
- "sf_property_isproperty": "Tai yra „$1“ tipo savybė.",
- "sf_property_allowedvals": "Šios savybės leidžiamos reikšmės yra:",
- "sf_template_docu": "Tai yra „$1“ šablonas.\nJis turėtų būti kviečiamas šiuo formatu formatu:",
- "sf_template_docufooter": "Norėdami matyti šablono tekstą, turite redaguoti puslapį.",
- "sf_form_docu": "Tai yra „$1“ forma.\nNorėdami sukurti puslapį naudojantis šia forma, įveskite to pulslapio vardą žemiau.\nJeigu puslapis tokiu vardu jau egzistuoja, šia forma galėsite jį redaguoti.",
- "sf_form_freetextlabel": "Laisvas tekstas",
- "sf_category_hasdefaultform": "Ši kategorija naudoja „$1“ formą.",
- "sf_category_desc": "Tai yra „$1“ kategorija.",
- "sf_blank_namespace": "Pagrindinis"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/lv.json b/SemanticForms/i18n/lv.json
deleted file mode 100644
index 4e85fde0..00000000
--- a/SemanticForms/i18n/lv.json
+++ /dev/null
@@ -1,133 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ilmarmors",
- "Papuass"
- ]
- },
- "semanticforms-desc": "Formas semantisko datu pievienošanai un rediģēšanai",
- "specialpages-group-sf_group": "Semantiskās formas",
- "createproperty": "Izveidot īpašību",
- "sf_createproperty_linktoform": "Šī īpašība norādīs uz lapām, kas izmanto formu:",
- "sf_createproperty_allowedvalsinput": "Ja jūs gribiet, lai šī īpašība saturētu tikai noteiktas vērtības, ievadiet ar komatu atdalītu atļauto vērtību sarakstu (ja vērtība satur komatu, tad aizvietojiet to ar \"\\,\"):",
- "sf_createproperty_propname": "Īpašības nosaukums:",
- "sf_createproperty_proptype": "Tips:",
- "templates": "Veidnes",
- "sf_templates_docu": "Wiki pastāv sekojošas veidnes.",
- "sf_templates_definescat": "definē kategoriju: $1",
- "createtemplate": "Izveidot veidni",
- "sf_createtemplate_namelabel": "Veidnes nosaukums:",
- "sf_createtemplate_categorylabel": "Kategorija, ko definē veidne (neobligāta):",
- "sf_createtemplate_templatefields": "Veidnes lauki",
- "sf_createtemplate_fieldsdesc": "Definējot veidnes laukus, īstā nosaukuma vietā var vienkārši ievadīt katra lauka indeksu (piemēram, 1, 2, 3 utt.).",
- "sf_createtemplate_fieldname": "Lauka nosaukums:",
- "sf_createtemplate_displaylabel": "Rādāmā iezīme:",
- "sf_createtemplate_semanticproperty": "Semantiskā īpašība:",
- "sf_createtemplate_fieldislist": "Šajā laukā var būt ar komatiem atdalītu vērtību saraksts",
- "sf_createtemplate_aggregation": "Agregēšana",
- "sf_createtemplate_aggregationdesc": "Lai lapā, kas izmanto šo veidni, izveidotu sarakstu ar visām lapām, kuru noteikta īpašība norāda uz to lapu, norādiet atbilstošo īpašību zemāk:",
- "sf_createtemplate_aggregationlabel": "Saraksta virsraksts:",
- "sf_createtemplate_outputformat": "Izvades formāts:",
- "sf_createtemplate_standardformat": "Tabula",
- "sf_createtemplate_infoboxformat": "Infokaste",
- "sf_createtemplate_addfield": "Pievienot lauku",
- "sf_createtemplate_deletefield": "Izdzēst",
- "forms": "Formas",
- "sf_forms_docu": "Wiki ir sekojošas formas.",
- "sf_forminputs_mandatory": "Šim laukam obligāti jāievada vērtība",
- "sf_forminputs_restricted": "Šo lauku var rediģēt tikai administratori",
- "sf_forminputs_class": "Šī ievadlauka HTML \"class\" atribūts",
- "sf_forminputs_default": "Noklusējuma vērtība šim ievadlaukam",
- "sf_forminputs_preload": "Wiki lapa, kuras saturs kļūs par šī ievadlauka noklusējuma vērtību",
- "sf_forminputs_property": "Šim laukam atbilstošā semantiskā īpašība",
- "sf_forminputs_size": "Šī teksta lauka lielums rakstzīmēs",
- "sf_forminputs_maxlength": "Maksimālais atļautais teksta garums šajā laukā",
- "sf_forminputs_placeholder": "Palīdzības teksts, kas pārādās ievadlaukā līdz brīdim, kas lietotājs noklikšķina uz tā.",
- "sf_forminputs_uploadable": "Novietot saiti \"Augšupielādēt failu\" blakus šim ievadlaukam",
- "sf_forminputs_defaultfilename": "Noklusētais nosaukums augšupielādētiem failiem",
- "sf_forminputs_rows": "Rindu skaits šajā ievadlaukā",
- "sf_forminputs_cols": "Kolonnu skaits šajā ievadlaukā",
- "sf_forminputs_autogrow": "Iestatīt automātisku šī ievadlauka palielināšanu, ja teksts pārsniedz tā robežas",
- "sf_forminputs_valuesfromproperty": "Īpašība, kuras vērtības būs šī ievades lauka vērtību kopa",
- "sf_forminputs_valuesfromcategory": "Kategorijas, kurai piederošās lapas būs šī ievades lauka vērtību kopa",
- "sf_forminputs_valuesfromnamespace": "Vārdtelpa, kuras vērtības būs šī ievades lauka vērtību kopa",
- "sf_forminputs_valuesfromconcept": "Semantiskā MediaWiki jēdziens, kurai piederošās lapas būs šī ievades lauka vērtību kopa",
- "sf_forminputs_valuesfromurl": "Tīmekļa adrese, kas satur strukturētus datus, kas būs šī ievades lauka vērtību kopa",
- "sf_forminputs_values": "Ar komatu atdalīta vērtību kopa šim ievades laukam",
- "sf_forminputs_list": "Atzīmēt šo ievades lauku kā vērtību sarakstu",
- "sf_forminputs_delimiter": "Atdalītājs starp lauka vērtībām, ja šis ievades lauks satur vērtību sarakstu",
- "sf_forminputs_remoteautocompletion": "Izmantot attālo automātisko pabeigšanu",
- "sf_forminputs_existingvaluesonly": "Atļaut tikai vērtības, kas ir sarakstā",
- "sf_forminputs_showonselect": "Rādīt lapas elementus tikai, ja ir izvēlētas noteiktas vērtības (piemēram: \"vērtība1 => div1; vērtība2 => div2\")",
- "sf_forminputs_listboxsize": "Sarakstlodziņa augstums rindās",
- "sf_forminputs_includetimezone": "Ietvert ievades lauku laika joslai",
- "sf_forminputs_topcategory": "Šīs kategoriju kopas vecākkategorija (obligāta)",
- "sf_forminputs_hideroot": "Paslēpt vecākkategoriju",
- "sf_forminputs_height": "Šī ievades lauka augstums pikseļos",
- "sf_forminputs_width": "Šī ievades lauka platums pikseļos",
- "createform": "Izveidot formu",
- "sf_createform_nameinput": "Formas nosaukums",
- "sf_createform_nameinputdesc": "(parasti formas nosaukums ir tāds pats kā galvenajai veidnei)",
- "sf_createform_template": "Veidne:",
- "sf_createform_templatelabelinput": "Veidnes iezīme (neobligāta)",
- "sf_createform_allowmultiple": "Atļaut vairākas (vai nevienu) šīs veidnes instances izveidojamajā lapā",
- "sf_createform_field": "Lauks:",
- "sf_createform_fieldprop": "Šis lauks definē īpašību $1 ar tipu $2",
- "sf_createform_fieldproplist": "Šis lauks definē sarakstu ar elementiem, kuriem ir īpašība $1 ar tipu $2",
- "sf_createform_fieldpropunknowntype": "Šis lauks definē īpašību $1 ar nenorādītu tipu.",
- "sf_createform_inputtype": "Ievadlauka tips:",
- "sf_createform_inputtypedefault": "(pēc noklusējuma)",
- "sf_createform_formlabel": "Formas iezīme:",
- "sf_createform_hidden": "paslēpta",
- "sf_createform_removetemplate": "Noņemt veidni",
- "sf_createform_addtemplate": "Pievienot veidni:",
- "sf_createform_atend": "Beigās",
- "sf_createform_add": "Pievienot",
- "sf_createform_choosefield": "Izvēlieties lauku, ko pievienot",
- "sf_createform_before": "Pirms:",
- "sf_createform_additembeforesave": "Jāpievieno vismaz viena veidne, lai varētu saglabāt formu.",
- "createcategory": "Izveidot kategoriju",
- "sf_createcategory_name": "Kategorijas nosaukums:",
- "sf_createcategory_defaultform": "Noklusējuma forma:",
- "sf_createcategory_makesubcategory": "Padarīt to kā apakškategoriju citai kategorijai (neobligāti)",
- "createclass": "Izveidot klasi",
- "sf_createclass_allowedvalues": "Atļautās vērtības:",
- "sf_createclass_listofvalues": "Vērtību saraksts?",
- "sf_createclass_nameinput": "Formas nosaukums",
- "sf_createclass_missingvalues": "Nav aizpildīti visi nepieciešamie lauki.",
- "sf_createclass_create": "Izveidot",
- "sf_formstart_badtitle": "Kļūda: \"$1\" nav derīgs lapas nosaukums.",
- "sf_formstart_createoredit": "Izveidot vai rediģēt",
- "formedit": "Labot ar formu",
- "sf_formedit_createtitlenotarget": "Izveidot $1",
- "sf_formedit_altformsonly": "Lūdzu, izvēlieties vienu no sekojošām formām, lai pievienotu šo lapu:",
- "sf_formcreate": "Izveidot ar formu",
- "sf_viewform": "Skatīt formu",
- "sf_formedit_saveandcontinueediting": "Saglabāt un turpināt",
- "sf_formedit_tooltip_saveandcontinueediting": "Saglabāt datus un turpināt rediģēšanu",
- "sf_autoedit_notargetspecified": "Nav norādīta mērķlapa.",
- "sf_autoedit_noformfound": "Nav norādīta forma.",
- "sf_autoedit_toomanyformsfound": "Lapai pieejama vairāk kā viena forma.",
- "runquery": "Izpildildīt vaicājumu",
- "sf_runquery_title": "Izpildīt vaicājumu: $1",
- "sf_runquery_additionalquery": "Papildu vaicājums",
- "sf_formerrors_header": "Ievades formā ir atrastas kļūdas; skatīt zemāk.",
- "sf_blank_error": "nevar būt tukšs",
- "sf_bad_url_error": "jābūt derīgai tīmekļa adresei (URL), kas sākas ar \"http\"",
- "sf_bad_email_error": "jābūt derīgam e-pasta adreses formātam",
- "sf_bad_number_error": "jābūt derīgam skaitlim",
- "sf_bad_date_error": "jābūt derīgam datumam",
- "uploadwindow": "Augšupielādes logs",
- "sf_deletionlog": "Dzēšanas reģistrs",
- "sf-pageschemas-pagenameformula": "Lapas nosaukuma formula:",
- "sf-pageschemas-createtitle": "Formas nosaukums jaunām lapām:",
- "sf-pageschemas-edittitle": "Formas nosaukums esošām lapām:",
- "sf_template_docufooter": "Rediģējiet lapu, lai aplūkotu veidnes tekstu.",
- "sf_form_freetextlabel": "Brīvais teksts",
- "sf_category_hasdefaultform": "Šī kategorija lieto formu $1.",
- "sf_category_desc": "Šī ir kategorija $1",
- "right-editrestrictedfields": "Rediģēt ierobežotos formas laukus",
- "right-createclass": "Izveidot jaunas semantiskās klases",
- "action-createclass": "izveidot jaunas semantiskās klases",
- "action-editrestrictedfields": "rediģēt ierobežotos formas laukus"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/mhr.json b/SemanticForms/i18n/mhr.json
deleted file mode 100644
index 437bb992..00000000
--- a/SemanticForms/i18n/mhr.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Сай",
- "Санюн Вадик"
- ]
- },
- "sf_createtemplate_deletefield": "Шӧраш",
- "sf_createform_inputtypedefault": "(тӱҥалтыш)"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/min.json b/SemanticForms/i18n/min.json
deleted file mode 100644
index 7dc6ffac..00000000
--- a/SemanticForms/i18n/min.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Iwan Novirion",
- "Naval Scene"
- ]
- },
- "sf_createproperty_propname": "Namo properti:",
- "sf_viewform": "Caliak formulir"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/mk.json b/SemanticForms/i18n/mk.json
deleted file mode 100644
index 5408eb8e..00000000
--- a/SemanticForms/i18n/mk.json
+++ /dev/null
@@ -1,199 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Bjankuloski06",
- "Brest"
- ]
- },
- "semanticforms-desc": "Обрасци за додавање и уредување на семантички податоци",
- "specialpages-group-sf_group": "Семантички обрасци",
- "createproperty": "Создај својство",
- "sf-createproperty-with-name": "Создај својство: $1",
- "sf_createproperty_linktoform": "Ова својство ќе дава врски до страници што го користат образецот:",
- "sf_createproperty_allowedvalsinput": "Ако сакате ова својство да може да има само извесни вредности, внесете го списокот на дозволени вредности, одделени со запирки (ако некоја вредност содржи запирка, тогаш заменете ја запирката со „\\,“):",
- "sf_createproperty_propname": "Име на својството:",
- "sf_createproperty_proptype": "Тип:",
- "templates": "Шаблони",
- "sf_templates_docu": "Во викито постојат следниве шаблони.",
- "sf_templates_definescat": "дефинира категорија: $1",
- "createtemplate": "Создај шаблон",
- "sf-createtemplate-with-name": "Создај шаблон: $1",
- "sf_createtemplate_namelabel": "Име на шаблонот:",
- "sf_createtemplate_multipleinstance": "Овој шаблон може да се става повеќекратно на истата страница.",
- "sf_createtemplate_connectingproperty": "Име на својството што треба да ги поврзе полињата на овој шаблон со остатокот од страницата:",
- "sf_createtemplate_categorylabel": "Категорија определена од шаблон (незадолжително):",
- "sf_createtemplate_templatefields": "Полиња на шаблонот:",
- "sf_createtemplate_fieldsdesc": "Ако сакате полињата во шаблонов повеќе да не бараат имиња, едноставно внесете индекс за секое поле (на пр. 1, 2, 3, и тн.) наместо фактичко име.",
- "sf_createtemplate_fieldname": "Име на полето:",
- "sf_createtemplate_displaylabel": "Натпис за приказ:",
- "sf_createtemplate_semanticproperty": "Семантичко својство:",
- "sf_createtemplate_fieldislist": "Ова поле може да содржи список на вредности, одделени со запирки",
- "sf_createtemplate_aggregation": "Насобирање",
- "sf_createtemplate_aggregationdesc": "За да ги наведете сите страници што имаат извесно својство кое покажува кон таа страница на било која страница што го користи овој шаблон, назначете го соодветното својство подолу:",
- "sf_createtemplate_aggregationlabel": "Наслов за списокот:",
- "sf_createtemplate_outputformat": "Формат на изводот:",
- "sf_createtemplate_standardformat": "Табела",
- "sf_createtemplate_infoboxformat": "Странична инфокутија",
- "sf_createtemplate_plainformat": "Прост текст",
- "sf_createtemplate_sectionsformat": "Поднаслови",
- "sf_createtemplate_addfield": "Додај поле",
- "sf_createtemplate_deletefield": "Избриши",
- "forms": "Обрасци",
- "sf_forms_docu": "Во викито постојат следниве обрасци.",
- "sf_forminputs_mandatory": "Мора да внесете вредност за овој внос",
- "sf_forminputs_restricted": "Овој внос може да го уредуваат само администратори",
- "sf_forminputs_class": "HTML-атрибутот „class“ за овој внос",
- "sf_forminputs_default": "Основната вредност за овој внос",
- "sf_forminputs_preload": "Вики-страница чијашто содржина ќе стане основната вредност на овој внос",
- "sf_forminputs_property": "Семантичко својство на кое соодветствува ова поле",
- "sf_forminputs_size": "Големината на ова поле за текст, во знаци",
- "sf_forminputs_maxlength": "Максималната допуштена должина на текстот во полево",
- "sf_forminputs_placeholder": "Текст со помош што се прикажува во полето за внесување текст сè додека корисникот не стисне на него.",
- "sf_forminputs_uploadable": "Ставете врскa „Подигни податотека“ веднаш до овој внос",
- "sf_forminputs_defaultfilename": "Основно-зададено име на подигнатите податотеки",
- "sf_forminputs_rows": "Број на редови за овој внос",
- "sf_forminputs_cols": "Број на колони за овој внос",
- "sf_forminputs_autogrow": "Поставете го овој внос да расте во големина ако текстот ги надминува неговите граници",
- "sf_forminputs_valuesfromproperty": "Својство чиишто вредности во викито треба да се збирот вредности на овој внос",
- "sf_forminputs_valuesfromcategory": "Категорија чиишто страници треба да се збирот вредности на овој внос",
- "sf_forminputs_valuesfromnamespace": "Именски простор чиишто страници треба да се збирот вредности на овој внос",
- "sf_forminputs_valuesfromconcept": "„Концептна“ страница на Семантички МедијаВики чиишто страници треба да се збирот вредности на овој внос",
- "sf_forminputs_valuesfromurl": "URL-адреса што содржи структурирани податоци што треба да се збирот вредности на овој внос",
- "sf_forminputs_values": "Збирот вредности за овој внос, одделени со запирки",
- "sf_forminputs_list": "Означи го овој внос како содржател на список на вредности",
- "sf_forminputs_delimiter": "Раздвојник помеѓу вредностите на полето, ако овој внос содржи нивен список",
- "sf_forminputs_remoteautocompletion": "Користи далечинско автодовршување",
- "sf_forminputs_existingvaluesonly": "Допуштај само вредности што се веќе на списокот",
- "sf_forminputs_showonselect": "Елементи на страницата за приказ само ако се одбрани извесни вредности (пример: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "Висината на списочното поле, во редови",
- "sf_forminputs_includetimezone": "Вклучи внос за овој часовен појас",
- "sf_forminputs_topcategory": "Матичната категорија на овој збир категории (задолжително)",
- "sf_forminputs_hideroot": "Скриј ја матичната категорија",
- "sf_forminputs_depth": "Колку нивоа на категории да се прикажуваат првично",
- "sf_forminputs_height": "Висината на овој внос, во пиксели",
- "sf_forminputs_width": "Ширината на овој внос, во пиксели",
- "createform": "Создај образец",
- "sf-createform-with-name": "Создај образец: $1",
- "sf_createform_nameinput": "Име на образецот",
- "sf_createform_nameinputdesc": "(обично образецот се именува по главниот шаблон што го содржи):",
- "sf_createform_template": "Шаблон:",
- "sf_createform_templatelabelinput": "Наслов на шаблонот (незадолжително):",
- "sf_createform_allowmultiple": "Овозможи повеќе (наспроти нула) јавувања на овој шаблон во создадената страница",
- "sf_createform_field": "Поле:",
- "sf_createform_fieldprop": "Ова поле го дефинира својството $1, од типот $2.",
- "sf_createform_fieldproplist": "Ова поле определува список на елементите што го имаат својството $1, од типот $2.",
- "sf_createform_fieldpropunknowntype": "Ова поле го определува својството $1, од неназначен тип.",
- "sf_createform_inputtype": "Вносен тип:",
- "sf_createform_inputtypedefault": "(по основно)",
- "sf_createform_formlabel": "Наслов на образецот:",
- "sf_createform_hidden": "Скриена",
- "sf_createform_removetemplate": "Отстрани шаблон",
- "sf_createform_addtemplate": "Додај шаблон:",
- "sf_createform_atend": "На крај",
- "sf_createform_add": "Додај",
- "sf_createform_choosefield": "Одберете поле за додавање",
- "sf_createform_pagesection": "Дел од страницата:",
- "sf_createform_addsection": "Додај поднаслов",
- "sf_createform_removesection": "Отстрани поднаслов",
- "sf_createform_before": "Пред шаблонот:",
- "sf_createform_addelements": "Додај елементи",
- "sf_createform_hiddensection": "Овој внос е скриен во образецот",
- "sf_createform_sectionlevel": "Ниво на поднасловот:",
- "sf_createform_sectionname": "Назив на поднасловот",
- "sf_createform_additembeforesave": "Пред да можете да го зачувате, во образецов мора да додадете барем еден шаблон.",
- "sf_createform_otherparameters": "Други параметри",
- "createcategory": "Создај категорија",
- "sf-createcategory-with-name": "Создај катетгорија: $1",
- "sf_createcategory_name": "Име на категоријата:",
- "sf_createcategory_defaultform": "Основен образец:",
- "sf_createcategory_makesubcategory": "Направи ова да биде поткатегорија на друга категорија (незадолжително):",
- "createclass": "Создај класа",
- "sf_createclass_docu": "Тука внесете ги сите податоци за да ги создадете својствата, шаблонот, образецот и категоријата за една класа. За повеќе можности за нагодување, употребете ја страницата $1.",
- "sf_createclass_allowedvalues": "Дозволени вредности:",
- "sf_createclass_listofvalues": "Список на вредности?",
- "sf_createclass_nameinput": "Име на образецот:",
- "sf_createclass_missingvalues": "Не се пополнети сите потребни полиња.",
- "sf_createclass_success": "Ќе бидат создадени својства, шаблон, образец и категорија.",
- "sf_createclass_create": "Создај",
- "formstart": "Додај страница со образец",
- "sf_formstart_badform": "Грешка: на $1 не е пронајден образец",
- "sf_formstart_badtitle": "Грешка: „$1“ не претставува важечки наслов за страница.",
- "sf_formstart_docu": "Тука внесете го името на страницата која ќе се уредува со образецот „$1“.\nАко оваа страница веќе постои, ќе ви бидете пренасочени кон образецот за уредување на таа страница.\nАко не постои, ќе бидете пренасочени кон образецот за додавање на страницата.",
- "sf_formstart_noform_docu": "Тука внесете го името на страницата, и одберете го образецот со кој ќе уредувате.\nАко оваа страница веќе постои, ќе ви бидете пренасочени кон образецот за уредување.\nАко не постои, ќе бидете пренасочени кон образецот за додавање на страницата.",
- "sf_formstart_createoredit": "Создај или уреди",
- "formedit": "Уреди со образец",
- "sf_formedit_createtitle": "Создавање на $1: $2",
- "sf_formedit_createtitlenotarget": "Создај $1",
- "sf_formedit_badurl": "Оваа страница служи за уредување со помош на образец. Мора да назначите име на образецот и целна страница во URL-адресата;\nтоа треба да изгледа како „Special:FormEdit?form=<form name>&target=<target page>“ или „Special:FormEdit/<form name>/<target page>“.",
- "sf_formedit_altforms": "Наместо тоа, можете да ја додадете оваа страница со еден од следниве обрасци:",
- "sf_formedit_altformsonly": "Одберете еден од следните обрасци за додавање на страницата:",
- "sf_formcreate": "Создај со образец",
- "sf_viewform": "Погл. образецот",
- "sf_editsource": "Уреди го изворот",
- "sf_formedit_edittitle": "Уреди $1: $2",
- "sf_formedit_morethanoneform": "'''Предупредување:''' за оваа страница е определен повеќе од еден основен образец.",
- "sf_formedit_formwarning": "Предупредување: Оваа страница <a href=\"$1\">веќе постои</a>, но не го користи овој образец.",
- "sf_formedit_mismatchedbrackets": "Предупредување: Оваа страница содржи кадрави и квадратни загради што не се затворени, па затоа образецот не може да ја обработи страницата. <a href=\"$1\">Исправете ја грешката во изворниот текст</a> пред да продолжите.",
- "sf_formedit_remove": "Отстрани го примероков",
- "sf_formedit_addanotherabove": "Додај друг примерок над овој",
- "sf_formedit_addanother": "Додај уште",
- "sf_formedit_none": "Нема",
- "sf_formedit_emptytitle": "Грешка: Вметнатите податоци предизвикуваат празен наслов на статијата.",
- "sf_formedit_hookerror": "Грешка: Менувањето на целната статија е спречено од додаток на МедијаВики.",
- "sf_formedit_saveandcontinueediting": "Зачувај и продолжи",
- "sf_formedit_saveandcontinue_summary": "Зачувано со копчето „$1“ во образецот",
- "sf_formedit_tooltip_saveandcontinueediting": "Зачувајте ги податоците и продолжите со уредување",
- "sf_autoedit_anoneditwarning": "Предупредување: Не сте најавени. Вашата IP-адреса ќе биде заведена во историјата на страницава.",
- "sf_autoedit_success": "Измените на [[$1]] се успешно извршени користејќи го образецот $2.",
- "sf_autoedit_fail": "Измената на [[$1]] не успеа.",
- "sf_autoedit_notargetspecified": "Нема наведено целна страница",
- "sf_autoedit_invalidtargetspecified": "Укажаната целна страница '''$1''' е погрешна.",
- "sf_autoedit_invalidform": "'''$1''' не претставува важечки образец.",
- "sf_autoedit_redirectlimitexeeded": "Достигнат е максималниот дозволен број на пренасочувања за образецот $1.",
- "sf_autoedit_invalidredirecttarget": "$1 е неважечка цел на пренасочување за образецот $2.",
- "sf_autoedit_invalidpreloadspecified": "Укажаната претвчитана страница $1 е погрешна.",
- "sf_autoedit_redlinkexists": "$1 веќе постои.",
- "sf_autoedit_noformfound": "Нема наведено образец",
- "sf_autoedit_toomanyformsfound": "На располагање имате повеќе од еден образец за страницата.",
- "sf_autoedit_readonly": "Базата на податоци моментално е заклучена поради измени. Причина: $1",
- "sf_autoedit_nosemanticform": "Не можев да го добијам образецот $2 за страницата $1. Поподробно на [[{{#special:FormEdit}}/$2/$1]].",
- "sf_autoedit_summary": "Автоматски уредено од страницата $1.",
- "sf-autoedit-wait": "Почекајте...",
- "runquery": "Пушти барање",
- "sf_runquery_badurl": "Мора да назначите име на образецот во URL-адресата;\nURL-адресата треба да изгледа вака: „Special:RunQuery/<form name>“.",
- "sf_runquery_title": "Постави прашање: $1",
- "sf_runquery_additionalquery": "Дополнително прашање",
- "sf_formerrors_header": "Најдени се грешки во вносот на образецот; погледајте подолу",
- "sf_too_few_instances_error": "Мора да {{PLURAL:$1|постои барем еден примерок|постојат барем $1 примероци}} на шаблонов.",
- "sf_too_many_instances_error": "Не може да {{PLURAL:$1|постои повеќе од еден примерок|постојат повеќе од $1 примероци}} на шаблонов.",
- "sf_blank_error": "не може да стои празно",
- "sf_bad_url_error": "мора да има правилен URL формат, кој почнува со „http“",
- "sf_bad_email_error": "мора да има важечки формат на е-поштенска адреса",
- "sf_bad_number_error": "мора да биде важечки број",
- "sf_bad_date_error": "мора да биде важечки датум",
- "uploadwindow": "Прозорец за подигање",
- "sf_deletionlog": "Дневник на бришења",
- "sf-preview-header": "Преглед на образецот",
- "sf-preview-note": "Вака ќе изгледа образецот кога ќе се користи:",
- "sf-pageschemas-pagenameformula": "Формула за името на страницата:",
- "sf-pageschemas-createtitle": "Наслов на образецот за нови страници:",
- "sf-pageschemas-edittitle": "Наслов на образецот за постоечки страници:",
- "sf-pageschemas-inputtype": "Тип на внос (оставете празно за да биде по основно):",
- "sf-pageschemas-otherparams": "Внесте ги имињата на параметрите и нивните вредности во парови „клуч=вредност“, одделени со запирки (ако самата вредност содржи запирка, заменете ја со „\\,“). На пример: $1",
- "sf_property_isproperty": "Ова е својство од типот $1.",
- "sf_property_linkstoform": "Дава врски кон страниците кои го користат образецот $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Дозволената вредност за ова својство е|Дозволените вредности за ова својство се}}:",
- "sf_template_docu": "Ова е шаблонот „$1“.\nТреба да се повикува во следниов формат:",
- "sf_template_docufooter": "Почнете со уредување на страницата за да го видите текстот на шаблонот.",
- "sf_form_docu": "Ова е образецот „$1“.\nЗа да создадете страница со овој образец, внесете го името на страницата подолу;\nако веќе постои така именувана страница, ќе бидете пренасочени кон образец за уредување на таа страница.",
- "sf_form_freetextlabel": "Слободен текст",
- "sf_category_hasdefaultform": "Оваа категорија го користи образецот $1.",
- "sf_category_desc": "Ова е категоријата $1.",
- "sf_blank_namespace": "Главен",
- "right-viewedittab": "Приказ на јазиче „{{int:edit}}“ за страниците уредливи со образец",
- "right-editrestrictedfields": "Уредување на заштитени полиња на обрасци",
- "right-createclass": "Создавање на нови семантички класи",
- "action-createclass": "создавање на нови семантички класи",
- "action-editrestrictedfields": "уредување на заштитени полиња на обрасци",
- "action-viewedittab": "приказ на јазичето „{{int:edit}}“ кај страниците уредливи со образец"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ml.json b/SemanticForms/i18n/ml.json
deleted file mode 100644
index 30070770..00000000
--- a/SemanticForms/i18n/ml.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Praveenp",
- "Shijualex"
- ]
- },
- "sf_createproperty_propname": "പേര്‌:",
- "sf_createproperty_proptype": "തരം:",
- "templates": "ഫലകങ്ങൾ",
- "sf_templates_docu": "താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്ന ഫലകങ്ങൾ ഈ വിക്കിയിൽ നിലവിലുണ്ട്.",
- "sf_templates_definescat": "വർഗ്ഗം നിർ‌വചിക്കുന്നു: $1",
- "createtemplate": "ഫലകം നിർമ്മിക്കുക",
- "sf_createtemplate_namelabel": "ഫലകത്തിന്റെ പേര്‌:",
- "sf_createtemplate_categorylabel": "ഫലകം ഉപയോഗിച്ചു്‌ നിർ‌വചിച്ച വർഗ്ഗം (നിർബന്ധമില്ല):",
- "sf_createtemplate_aggregationlabel": "പട്ടികയ്ക്കുള്ള തലക്കെട്ട്:",
- "sf_createtemplate_outputformat": "ഔട്ട്പുട്ട് ഫോർമാറ്റ്:",
- "sf_createtemplate_standardformat": "മാനകം",
- "sf_createtemplate_deletefield": "മായ്ക്കുക",
- "sf_forminputs_mandatory": "നിർബന്ധം",
- "sf_forminputs_restricted": "നിയന്ത്രിതം (സിസോപ്പുകൾക്ക് മാത്രമേ ഇതു തിരുത്താൻ സാധിക്കൂ)",
- "createform": "ഫോം സൃഷ്ടിക്കുക",
- "sf_createform_template": "ഫലകം:",
- "sf_createform_field": "ഫീൽഡ്:",
- "sf_createform_inputtype": "ഇൻ‌പുട്ട് തരം:",
- "sf_createform_inputtypedefault": "(സ്വതേ)",
- "sf_createform_hidden": "മറഞ്ഞിരിക്കുന്നത്",
- "sf_createform_removetemplate": "ഫലകം മാറ്റുക",
- "sf_createform_addtemplate": "ഫലകം ചേർക്കുക:",
- "sf_createform_atend": "അവസാനത്തിൽ",
- "sf_createform_add": "ചേർക്കുക",
- "sf_createform_before": "ഫലകത്തിനു മുൻപ്:",
- "createcategory": "വർഗ്ഗം സൃഷ്ടിക്കുക",
- "sf_createcategory_name": "പേര്‌:",
- "sf_createcategory_defaultform": "സ്വതവെയുള്ള ഫോം:",
- "sf_createcategory_makesubcategory": "ഇതു മറ്റൊരു വർഗ്ഗത്തിന്റെ ഉപവർഗ്ഗമാക്കുക (നിർബന്ധമില്ല):",
- "sf_formstart_badform": "പിഴവ്: $1ല്‍ ഫോം താള്‍ ഒന്നും കണ്ടില്ല",
- "sf_formstart_createoredit": "സൃഷ്ടിക്കുക അല്ലെങ്കിൽ തിരുത്തുക",
- "formedit": "ഫോം ഉപയോഗിച്ചു തിരുത്തുക",
- "sf_formedit_createtitle": "$1 സൃഷ്ടിക്കുക: $2",
- "sf_formedit_altformsonly": "ഈ താള്‍ ചേര്‍ക്കുവാന്‍ താഴെ കൊടുത്തിട്ടുള്ള ഫോമുകളില്‍ ഒന്ന് തിരഞ്ഞെടുക്കുക:",
- "sf_viewform": "ഫോം കാണുക",
- "sf_editsource": "മൂലരൂപം തിരുത്തുക",
- "sf_formedit_edittitle": "$1 തിരുത്തുക: $2",
- "sf_formedit_remove": "നീക്കം ചെയ്യുക",
- "sf_formedit_addanother": "മറ്റൊന്ന് ചേര്‍ക്കുക",
- "sf_formedit_none": "ഒന്നുമില്ല",
- "sf_formerrors_header": "താങ്കളുടെ ഇൻപുട്ട് ഫോമിൽ പിഴവുകൾ ഉണ്ട്; താഴെ കാണുക",
- "sf_blank_error": "ശൂന്യമാക്കിയിടുന്നത് അനുവദനീയമല്ല",
- "sf_bad_url_error": "'http' എന്നു തുടങ്ങുന്ന ശരിയായ URL രൂപം ഉപയോഗിക്കണം",
- "sf_bad_email_error": "സാധുവായ ഇമെയിൽ വിലാസ ഫോർമാറ്റ് നിർബന്ധമാണ്‌",
- "sf_bad_number_error": "സാധുവായ സംഖ്യ നിർബന്ധമാണ്‌",
- "sf_bad_date_error": "സാധുവായ തീയതി നിർബന്ധമാണ്‌",
- "sf_template_docufooter": "ഫലകത്തിന്റെ ഉള്ളടക്കം കാണാൻ താൾ തിരുത്തുക.",
- "sf_category_hasdefaultform": "ഈ വർഗ്ഗം $1 എന്ന ഫോം ഉപയോഗിക്കുന്നു.",
- "sf_category_desc": "ഇതു $1 എന്ന വർഗ്ഗമാണ്‌.",
- "sf_blank_namespace": "മുഖ്യം"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/mn.json b/SemanticForms/i18n/mn.json
deleted file mode 100644
index 19695760..00000000
--- a/SemanticForms/i18n/mn.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Chinneeb"
- ]
- },
- "sf_createform_add": "Нэмэх",
- "sf_deletionlog": "Устгалын лог"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/mr.json b/SemanticForms/i18n/mr.json
deleted file mode 100644
index 1855230a..00000000
--- a/SemanticForms/i18n/mr.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Kaustubh",
- "Mahitgar",
- "V.narsikar"
- ]
- },
- "createproperty": "एक गुणधर्म तयार करा",
- "sf_createproperty_allowedvalsinput": "जर तुम्ही या रकान्यात फक्त काहीच किंमती भरू इच्छित असाल, तर त्यांची यादी बनवा, स्वल्पविरामाने किंमतींमध्ये फरक दाखवा (जर एखाद्या किंमतीतच स्वल्पविराम येत असेल, तर त्या जागी \"\\,\" लिहा):",
- "sf_createproperty_propname": "नाव:",
- "sf_createproperty_proptype": "प्रकार:",
- "templates": "साचे",
- "sf_templates_docu": "या विकिवर खालील साचे उपलब्ध आहेत.",
- "sf_templates_definescat": "वर्गाची व्याख्या: $1",
- "createtemplate": "साचा तयार करा",
- "sf_createtemplate_namelabel": "साच्याचे नाव:",
- "sf_createtemplate_categorylabel": "साचा कुठल्या वर्गात आहे (वैकल्पिक):",
- "sf_createtemplate_templatefields": "साच्यातील रकाने",
- "sf_createtemplate_fieldsdesc": "जर या साच्यातील रकान्यांना नावे द्यायची नसतील, तर खर्‍या नावांऐवजी फक्त क्रमांक द्या (उदा. १, २, ३, इ.).",
- "sf_createtemplate_fieldname": "रकाना नाव:",
- "sf_createtemplate_displaylabel": "दाखविण्याचे लेबल:",
- "sf_createtemplate_semanticproperty": "सिमॅंटिक गुणधर्म:",
- "sf_createtemplate_fieldislist": "हा रकाना स्वल्पविरामाने वाटलेली किंमतींची यादी दर्शवितो",
- "sf_createtemplate_aggregation": "एकत्रीकरण",
- "sf_createtemplate_aggregationdesc": "एखाद्या पानावर असणार्‍या गुणधर्माला निर्देश करणारी पाने, ज्यांमध्ये हा साचा वापरण्यात आलेला आहे, अशा पानांची यादी करण्यासाठी तो गुणधर्म खाली लिहा:",
- "sf_createtemplate_aggregationlabel": "यादी साठी शीर्षक:",
- "sf_createtemplate_outputformat": "आउटपुटची रूपरेषा:",
- "sf_createtemplate_standardformat": "स्टॅंडर्ड",
- "sf_createtemplate_infoboxformat": "उजवीकडील माहितीचौकट",
- "sf_createtemplate_addfield": "रकाना वाढवा",
- "sf_createtemplate_deletefield": "वगळा",
- "forms": "अर्ज",
- "sf_forms_docu": "विकिवर खालील अर्ज उपलब्ध आहेत.",
- "sf_forminputs_mandatory": "अत्यावश्यक",
- "sf_forminputs_restricted": "प्रतिबंधित (फक्त प्रबंधकच बदलू शकतात)",
- "createform": "नवीन अर्ज बनवा",
- "sf_createform_nameinput": "अर्जाचे नाव (सर्वसाधारणपणे अर्ज ज्या मुख्य साच्यासाठी आहे त्या साच्याच्या नावानंतर अर्जाचे नाव असे लिहावे):",
- "sf_createform_template": "साचा:",
- "sf_createform_templatelabelinput": "साच्याचे लेबल (वैकल्पिक):",
- "sf_createform_allowmultiple": "तयार केलेल्या पानावर हा साचा अनेकवेळा (किंवा शून्यवेळा) वापरण्याची परवानगी द्या",
- "sf_createform_field": "रकाना:",
- "sf_createform_fieldprop": "हा रकाना $2 या प्रकारचा $1 हा गुणधर्म सांगतो.",
- "sf_createform_fieldproplist": "हा रकाना $2 या प्रकारचे $1 गुणधर्म असणार्‍या एलेमेंट्स ची यादी देतो.",
- "sf_createform_fieldpropunknowntype": "हा रकाना अनोळखी प्रकारचा $1 हा गुणधर्म देतो.",
- "sf_createform_inputtype": "इनपुट प्रकार:",
- "sf_createform_inputtypedefault": "(अविचल)",
- "sf_createform_formlabel": "अर्ज लेबल:",
- "sf_createform_hidden": "लपविलेले",
- "sf_createform_removetemplate": "साचा काढा",
- "sf_createform_addtemplate": "साचा वाढवा:",
- "sf_createform_atend": "शेवटी",
- "sf_createform_add": "वाढवा",
- "sf_createform_choosefield": "वाढविण्यासाठी एक रकाना निवडा",
- "sf_createform_pagesection": "पृष्ठ विभाग:",
- "sf_createform_addsection": "विभाग जोडा",
- "sf_createform_removesection": "विभाग हटवा",
- "sf_createform_before": "या साच्याच्या आधी:",
- "sf_createform_addelements": "घटक जोडा",
- "sf_createform_hiddensection": "आवेदनात हा भाग लपविलेला आहे",
- "sf_createform_sectionlevel": "विभाग स्तर:",
- "sf_createform_sectionname": "विभागाचे नाव",
- "sf_createform_additembeforesave": "हा अर्ज जतन करण्यापूर्वी तुम्ही कमीत कमी एक साचा देणे आवश्यक आहे.",
- "sf_createform_otherparameters": "ईतर प्राचले",
- "createcategory": "वर्ग बनवा",
- "sf_createcategory_name": "नाव:",
- "sf_createcategory_defaultform": "अविचल अर्ज:",
- "sf_createcategory_makesubcategory": "याला एका दुसर्‍या वर्गाचा उपवर्ग बनवा (वैकल्पिक):",
- "formstart": "पान वाढवा",
- "sf_formstart_badform": "त्रुटी: $1 वर कुठलेही अर्ज पान सापडलेले नाही",
- "sf_formstart_docu": "'$1' अर्जाचा वापर करून बदलण्यात येणार्‍या पानाचे नाव इथे लिहा.\nजर हे पान अगोदरच अस्तित्वात असेल, तर तुम्हांला ते पान बदलण्यासाठी लागणारा अर्ज देण्यात येईल.\nनाहीतर, तुम्हांला ते पान वाढविण्याचा अर्ज देण्यात येईल.",
- "sf_formstart_noform_docu": "बदलण्यात येणार्‍या पानाचे नाव लिहा तसेच बदलण्यासाठी वापरण्यात येणारा अर्ज निवडा.\nजर हे पान अगोदरच अस्तित्वात असेल, तर तुम्हांला ते पान बदलण्यासाठी लागणारा अर्ज देण्यात येईल.\nनाहीतर, तुम्हांला ते पान वाढविण्याचा अर्ज देण्यात येईल.",
- "sf_formstart_createoredit": "वाढवा किंवा बदला",
- "formedit": "अर्जासहित बदला",
- "sf_formedit_createtitle": "वाढवा $1: $2",
- "sf_formedit_badurl": "हे पान मजकूर वाढविण्यासाठी आहे. तुम्ही एक अर्जाचे नाव व लक्ष्य पान दोन्ही URL मध्ये देणे आवश्यक आहे. URL अशी दिसेल 'Special:FormEdit?form=<अर्जाचे नाव>&target=<लक्ष्य पान>', किंवा 'Special:FormEdit/<अर्जाचे नाव>/<लक्ष्य पान>'.",
- "sf_formedit_altforms": "हे पान तुम्ही या ऐवजी खालीलपैकी एक अर्ज वापरून वाढवू शकता:",
- "sf_formedit_altformsonly": "हे पान वाढविण्यासाठी कृपया खालील पैकी एक अर्ज निवडा:",
- "sf_viewform": "अर्ज पहा",
- "sf_editsource": "स्रोत संपादित करा",
- "sf_formedit_edittitle": "संपादित करा $1: $2",
- "sf_formedit_formwarning": "इशारा: हे पान <a href=\"$1\">अस्तित्वात आहे</a>, पण ते पान ह्या अर्जाचा वापर करीत नाही.",
- "sf_formedit_remove": "काढा",
- "sf_formedit_addanother": "दुसरे वाढवा",
- "sf_formedit_none": "काहीही नाही",
- "sf_formerrors_header": "तुमच्या अर्जामध्ये त्रुटी आहेत; खाली पहा",
- "sf_too_few_instances_error": "या साच्याचे कमीतकमी $1 प्रयोग हवेत.",
- "sf_too_many_instances_error": "या साच्याचे $1 पेक्षा जास्त प्रयोग नकोत.",
- "sf_blank_error": "रिकामे असू शकत नाही",
- "sf_bad_url_error": "'http' ने सुरू होणारी बरोबर URL असणे आवश्यक आहे",
- "sf_bad_email_error": "बरोबल इ-मेल पत्ता असणे आवश्यक आहे",
- "sf_bad_number_error": "योग्य संख्या असणे आवश्यक आहे",
- "sf_bad_date_error": "योग्य दिनांक असणे आवश्यक आहे",
- "sf_property_isproperty": "हा $1 प्रकारचा गुणधर्म आहे.",
- "sf_property_allowedvals": "या गुणधर्माच्या योग्य किंमती पुढीलप्रमाणे आहेत:",
- "sf_template_docu": "हा '$1' साचा आहे.\nहा खालीलप्रमाणे वापरला पाहिजे:",
- "sf_template_docufooter": "पानात साचा मजकूर पाहण्यासाठी योग्य असे बदल करा.",
- "sf_form_docu": "हा '$1' अर्ज आहे.\nहा अर्ज वापरून एखादे पान वाढविण्यासाठी, खाली पानाचे शीर्षक लिहा;\nजर त्या नावाचे पान अगोदरच अस्तित्वात असेल, तर तुम्हांला ते पान बदलण्यासाठीचा अर्ज पाठविला जाईल.",
- "sf_form_freetextlabel": "मुक्त मजकुर",
- "sf_category_hasdefaultform": "हे वर्गीकरण फॉर्म $1 वापरते.",
- "sf_category_desc": "हे $1 वर्गीकरण आहे.",
- "sf_blank_namespace": "मुख्य"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ms.json b/SemanticForms/i18n/ms.json
deleted file mode 100644
index bc2941f8..00000000
--- a/SemanticForms/i18n/ms.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Anakmalaysia"
- ]
- },
- "semanticforms-desc": "Borang untuk menambahkan dan menyunting data semantik",
- "createproperty": "Wujudkan sifat",
- "sf_createproperty_linktoform": "Sifat ini akan dipautkan dengan laman-laman yang menggunakan borang ini:",
- "sf_createproperty_allowedvalsinput": "Jika anda mahu sifat ini hanya dibenarkan mempunyai nilai-nilai tertentu, isikan senarai nilai yang dibenarkan, diikuti oleh tanda koma (jika sesuatu nilai ada tanda koma, gantinya dengan \"\\,\".):",
- "sf_createproperty_propname": "Nama sifat:",
- "sf_createproperty_proptype": "Jenis:",
- "templates": "Templat",
- "sf_createtemplate_connectingproperty": "Nama sifat untuk menyambungkan medan-medan templat ini dengan seluruh halaman:",
- "sf_createtemplate_deletefield": "Hapuskan",
- "forms": "Borang",
- "sf_createform_template": "Templat:",
- "sf_createform_inputtype": "Jenis input:",
- "sf_createform_inputtypedefault": "(azali)",
- "sf_createform_formlabel": "Label borang:",
- "sf_createform_add": "Tambahkan",
- "sf_createcategory_defaultform": "Borang sediaan:",
- "sf_createclass_listofvalues": "Senarai nilai?",
- "sf_createclass_create": "Cipta",
- "formedit": "Sunting dengan borang",
- "sf_formedit_createtitle": "Cipta $1: $2",
- "sf_formedit_createtitlenotarget": "Cipta $1",
- "sf_formcreate": "Buat dengan borang",
- "sf_viewform": "Lihat borang",
- "sf_editsource": "Sunting sumber",
- "sf_formedit_saveandcontinueediting": "Simpan dan sambung",
- "sf_blank_namespace": "Utama",
- "right-viewedittab": "Melihat tab \"{{int:edit}}\" untuk laman yang boleh disunting dengan borang",
- "right-editrestrictedfields": "Menyunting ruangan borang yang terhad",
- "right-createclass": "Membuat kelas semantik baru",
- "action-createclass": "buat kelas semantik baru"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/mt.json b/SemanticForms/i18n/mt.json
deleted file mode 100644
index 16f1f0cc..00000000
--- a/SemanticForms/i18n/mt.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Chrisportelli"
- ]
- },
- "sf-createform-with-name": "Oħloq formola: $1",
- "sf_createform_nameinput": "Isem tal-formola",
- "sf_createform_nameinputdesc": "(il-konvenzjoni hi l-formola tingħata l-istess isem bħall-mudell prinċipali):",
- "sf_createform_template": "Mudell:",
- "sf_createform_field": "Qasam:",
- "sf_createform_fieldprop": "Dan il-qasam jiddefinixxi l-proprjetà $1, tat-tip $2.",
- "sf_createform_fieldproplist": "Dan il-qasam jiddefinixxi lista ta' elementi li għandhom il-proprjetà $1, tat-tip $2.",
- "sf_createform_fieldpropunknowntype": "Dan il-qasam jiddefinixxi l-proprjetà $1, tat-tip mhux speċifikat.",
- "sf_createform_inputtype": "Tip ta' ''input'':",
- "sf_createform_formlabel": "Tikketta tal-formola:",
- "sf_createform_hidden": "Moħbi",
- "sf_createform_removetemplate": "Neħħi l-mudell",
- "sf_createform_addtemplate": "Żid mudell:",
- "sf_createform_add": "Żid",
- "sf_createform_choosefield": "Agħżel qasam xi żżid",
- "sf_createform_before": "Mudell preċedenti:",
- "createcategory": "Oħloq kategorija",
- "sf-createcategory-with-name": "Oħloq kategorija: $1",
- "sf_createcategory_name": "Isem tal-kategorija:",
- "sf_createcategory_makesubcategory": "Agħmel din sottokategorija ta' kategorija oħra (opzjonali):",
- "createclass": "Oħloq klassi",
- "sf_createclass_allowedvalues": "Valuri permessi:",
- "sf_createclass_listofvalues": "Lista ta' valuri?",
- "sf_createclass_nameinput": "Isem tal-formola:",
- "sf_createclass_missingvalues": "Mhux kull qasam neċessarji ġew mimlijin.",
- "sf_createclass_create": "Oħloq",
- "formstart": "Bidu tal-formola",
- "sf_formstart_badform": "Żball: L-ebda formola ma nstabet fuq il-paġna \"$1\".",
- "sf_formstart_badtitle": "Żball: \"$1\" huwa titlu invalidu għall-paġna.",
- "sf_formstart_createoredit": "Oħloq jew immodifika",
- "formedit": "Immodifika bil-formola",
- "sf_formedit_createtitle": "Oħloq $1: $2",
- "sf_formedit_createtitlenotarget": "Oħloq $1",
- "sf_formedit_altforms": "Minflok tista' żżid din il-paġna ma' waħda minn dawn il-formoli:",
- "sf_formedit_altformsonly": "Jekk jogħġbok agħżel waħda mill-formoli segwenti biex iżżid din il-paġna:",
- "sf_viewform": "Ara l-formola",
- "sf_editsource": "Immodifika s-sors",
- "sf_formedit_edittitle": "Modifika $1: $2",
- "sf_formedit_formwarning": "Attenzjoni: Din il-paġna <a href=\"$1\">diġà teżisti</a>, imma ma tużax din il-formola.",
- "sf_formedit_remove": "Neħħi",
- "sf_formedit_addanother": "Żid oħra",
- "sf_formedit_none": "L-ebda",
- "sf_formedit_saveandcontinueediting": "Salva u kompli",
- "sf_form_freetextlabel": "Test ħieles"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/myv.json b/SemanticForms/i18n/myv.json
deleted file mode 100644
index 1235d941..00000000
--- a/SemanticForms/i18n/myv.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Botuzhaleny-sodamo"
- ]
- },
- "sf_createproperty_propname": "Йонксонть лемезэ:",
- "sf_createproperty_proptype": "Типезэ:",
- "sf_createtemplate_deletefield": "Нардамс",
- "sf_createform_template": "Лопа парцунось:",
- "sf_createform_field": "Паксясь:",
- "sf_createform_hidden": "Кекшезь",
- "sf_createform_add": "Поладомс",
- "createcategory": "Шкамс категория",
- "sf_createcategory_name": "Кужонть лемезэ:",
- "sf_editsource": "Витнемс-петнемс лисьмапрянзо",
- "sf_formedit_remove": "Нардык тень"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/mzn.json b/SemanticForms/i18n/mzn.json
deleted file mode 100644
index d6989914..00000000
--- a/SemanticForms/i18n/mzn.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "محک"
- ]
- },
- "sf_formedit_badurl": "این صفحه برای افزودن ایطیلاعات هسته. شما ونه هم ایسم فورم هم ولگی که خانی بوری ره در URL دله بیارین. چیزی شبیه اینتا <br /><span dir=\"ltr\"> 'شاء:FormEdit?form=<نام فرم>&target=<ولگی که خانی بوری>' </span><br />یا<br /><span dir=\"ltr\"> 'شاء:FormEdit/<ایسم فرم>/<ولگی که خانی بوری>' </span>."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nah.json b/SemanticForms/i18n/nah.json
deleted file mode 100644
index 4323a5ab..00000000
--- a/SemanticForms/i18n/nah.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Fluence",
- "Ricardo gs",
- "Teòtlalili"
- ]
- },
- "sf_createproperty_propname": "Āxcāitl tōcāitl:",
- "templates": "Nemachiyōtīlli",
- "createtemplate": "Ticchīhuāz cē nemachiyōtīlli",
- "sf_createtemplate_namelabel": "Nemachiyōtīlli ītōca:",
- "sf_createtemplate_deletefield": "Ticpolōz",
- "sf_createform_inputtypedefault": "(ic default)",
- "sf_createform_hidden": "Ichtac",
- "sf_createform_atend": "Tlamilizpan",
- "sf_createform_add": "Ticcētilīz",
- "sf_createcategory_name": "Tlaìxmatkàtlàlilòtokâtli:",
- "sf_formstart_createoredit": "Titlayōcoyāz ahnozo titlapatlāz",
- "sf_formedit_createtitle": "Ticyōcoyāz $1: $2",
- "sf_formedit_edittitle": "Ticpatlāz $1: $2",
- "sf_formedit_addanother": "Titlacēntilīz occē",
- "sf_formedit_none": "Ahtlein"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nb.json b/SemanticForms/i18n/nb.json
deleted file mode 100644
index 2c5c8998..00000000
--- a/SemanticForms/i18n/nb.json
+++ /dev/null
@@ -1,190 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "EvenT",
- "Event",
- "Harald Khan",
- "Laaknor",
- "Nghtwlkr"
- ]
- },
- "semanticforms-desc": "Skjema for å legge til og endre semantiske data",
- "specialpages-group-sf_group": "Semantiske skjemaer",
- "createproperty": "Opprett en egenskap",
- "sf-createproperty-with-name": "Opprett egenskap: $1",
- "sf_createproperty_linktoform": "Denne egenskapen vil lenke til sider som bruker skjemaet:",
- "sf_createproperty_allowedvalsinput": "Om du ønsker at dette feltet kun skal kunne ha visse verdier, skriv inn listen over tillatte verdier, adskilt med komma (om en verdi inneholder komma, erstatt det med «\\,»):",
- "sf_createproperty_propname": "Navn på egenskap:",
- "sf_createproperty_proptype": "Type:",
- "templates": "Maler",
- "sf_templates_docu": "Følgende maler finnes på wikien.",
- "sf_templates_definescat": "definerer kategori: $1",
- "createtemplate": "Opprett en mal",
- "sf-createtemplate-with-name": "Opprett mal: $1",
- "sf_createtemplate_namelabel": "Malnavn:",
- "sf_createtemplate_multipleinstance": "Denne malen kan tas inn flere ganger på siden.",
- "sf_createtemplate_connectingproperty": "Egenskapsnavn som knytter denne malens felter til resten av siden:",
- "sf_createtemplate_categorylabel": "Kategori definert av mal (valgfri):",
- "sf_createtemplate_templatefields": "Malfelter",
- "sf_createtemplate_fieldsdesc": "For at feltene i denne malen ikke lenger skal kreve feltnavn, skriv inn indeksnummeret til hvert felt (altså 1, 2, 3, osv.) som navn, i stedet for et faktisk navn.",
- "sf_createtemplate_fieldname": "Feltnavn:",
- "sf_createtemplate_displaylabel": "Vis etikett:",
- "sf_createtemplate_semanticproperty": "Semantisk egenskap:",
- "sf_createtemplate_fieldislist": "Dette feltet kan inneholde en liste over verdier adskilt med komma",
- "sf_createtemplate_aggregation": "Aggregering",
- "sf_createtemplate_aggregationdesc": "For å liste opp alle artiklene som har en viss egenskap som peker til den siden på alle sider som bruker malen, angi denne egenskapen nedenfor:",
- "sf_createtemplate_aggregationlabel": "Tittel for liste:",
- "sf_createtemplate_outputformat": "Resultatformat:",
- "sf_createtemplate_standardformat": "Tabell",
- "sf_createtemplate_infoboxformat": "Infoboks på siden",
- "sf_createtemplate_plainformat": "Vanlig tekst",
- "sf_createtemplate_sectionsformat": "Avsnitt",
- "sf_createtemplate_addfield": "Legg til felt",
- "sf_createtemplate_deletefield": "Slett",
- "forms": "Skjemaer",
- "sf_forms_docu": "Følgende skjemaer finnes på wikien.",
- "sf_forminputs_mandatory": "Obligatorisk",
- "sf_forminputs_restricted": "Kun administratorer kan endre disse inndataene",
- "sf_forminputs_class": "HTML-\"class\"-attributt for disse inndata",
- "sf_forminputs_default": "Standardverdi for disse inndataene",
- "sf_forminputs_preload": "Wikiside som blir standardinnholdet for denne typen inndata",
- "sf_forminputs_property": "Semantisk egenskap som dette feltet svarer til",
- "sf_forminputs_size": "Antall tegn for dette tekstfeltet",
- "sf_forminputs_maxlength": "Maksimalt antall tegn for dette feltet",
- "sf_forminputs_placeholder": "Hjelpetekst som vises i inndatafeltet helt til brukeren klikker i det",
- "sf_forminputs_uploadable": "Sett en \"Last opp fil\"-lenke ved siden av denne typen inndata",
- "sf_forminputs_defaultfilename": "Standard filnavn for opplastede filer",
- "sf_forminputs_rows": "Antall rader for denne typen inndata",
- "sf_forminputs_cols": "Antall kolonner for denne typen inndata",
- "sf_forminputs_autogrow": "Angi at denne typen inndata kan øke i størrelse hvis teksten overskrider sine grenser",
- "sf_forminputs_valuesfromproperty": "En egenskap der dennes verdier i wikien burde representere verdiene til denne typen inndata",
- "sf_forminputs_valuesfromcategory": "En kategori der sidene burde representere denne typen inndatas verdisett",
- "sf_forminputs_valuesfromnamespace": "Et navnerom der sidene burde representere denne typen inndatas verdisett",
- "sf_forminputs_valuesfromconcept": "En begrepsside for Semantic MediaWiki med sider som burde representere verdisettet til denne typen inndata",
- "sf_forminputs_valuesfromurl": "En URL som inneholder strukturerte data som burde representere verdisettet for denne typen inndata",
- "sf_forminputs_values": "Verdisettet for denne typen inndata, kommaseparert",
- "sf_forminputs_list": "Marker at denne typen inndata inneholder en verdiliste",
- "sf_forminputs_delimiter": "Skilletegnet mellom feltverdier, hvis denne typen inndata inneholder en liste av slike",
- "sf_forminputs_remoteautocompletion": "Bruke ekstern autofullføring",
- "sf_forminputs_existingvaluesonly": "Tillat bare verdier som allerede er i listen",
- "sf_forminputs_showonselect": "Sideelementer som bare vises, hvis bestemte verdier er valgt (eksempel \"verdi1=>div1;verdi2=>div2\")",
- "sf_forminputs_listboxsize": "Antall rader for denne listeboksen",
- "sf_forminputs_includetimezone": "Ta med angivelse av tidssone",
- "sf_forminputs_topcategory": "Foreldrekategorien for dette kategorisettet (påkrevet)",
- "sf_forminputs_hideroot": "Skjul foreldrekategorien",
- "sf_forminputs_depth": "Antall kategorinivåer som vises initialt",
- "sf_forminputs_height": "Høyden for denne typen inndata, i piksler",
- "sf_forminputs_width": "Bredden for denne typen inndata, i piksler",
- "createform": "Opprett et skjema",
- "sf-createform-with-name": "Opprett skjema: $1",
- "sf_createform_nameinput": "Skjemanavn",
- "sf_createform_nameinputdesc": "(skjemaet får normalt samme navn som sin hovedmal):",
- "sf_createform_template": "Mal:",
- "sf_createform_templatelabelinput": "Malnavn (valgfritt):",
- "sf_createform_allowmultiple": "Tillat flere (eller ingen) instanser av denne malen på siden som opprettes",
- "sf_createform_field": "Felt:",
- "sf_createform_fieldprop": "Dette feltet definerer egenskapen $1, av type $2.",
- "sf_createform_fieldproplist": "Dette feltet definerer en liste over elementer som har egenskapen $1, av type $2.",
- "sf_createform_fieldpropunknowntype": "Dette feltet definerer egenskapen $1, av uspesifisert type.",
- "sf_createform_inputtype": "Innskrivningstype:",
- "sf_createform_inputtypedefault": "(standard)",
- "sf_createform_formlabel": "Skjemaetikett:",
- "sf_createform_hidden": "Skjult",
- "sf_createform_removetemplate": "Fjern mal",
- "sf_createform_addtemplate": "Legg til mal:",
- "sf_createform_atend": "Ved slutten",
- "sf_createform_add": "Legg til",
- "sf_createform_choosefield": "Velg et felt å legge til",
- "sf_createform_before": "Før mal:",
- "sf_createform_additembeforesave": "Du må legge til minst én mal til dette skjemaet før du kan lagre det.",
- "createcategory": "Opprett en kategori",
- "sf-createcategory-with-name": "Opprett kategori: $1",
- "sf_createcategory_name": "Kategorinavn:",
- "sf_createcategory_defaultform": "Standardskjema:",
- "sf_createcategory_makesubcategory": "Gjør dette til en underkategori av en annen kategori (valgfritt):",
- "createclass": "Opprett en klasse",
- "sf_createclass_docu": "Skriv inn alle data her for å opprette egenskaper, maler, skjemaer og kategorier for en enkelt klasse. For flere alternativer, bruk sidene $1 istedet.",
- "sf_createclass_allowedvalues": "Lovlige verdier:",
- "sf_createclass_listofvalues": "Verdiliste?",
- "sf_createclass_nameinput": "Skjemanavn:",
- "sf_createclass_missingvalues": "Noen obligatoriske felt ble ikke fylt ut.",
- "sf_createclass_success": "Egenskaper, maler, skjemaer og kategorier vil bli opprettet.",
- "sf_createclass_create": "Opprett",
- "formstart": "Legg til side gjennom et skjema",
- "sf_formstart_badform": "Feil: ingen skjemaside funnet på $1",
- "sf_formstart_badtitle": "Feil: «$1» er en ugyldig tittel for en side.",
- "sf_formstart_docu": "Skriv inn navnet på siden som skal redigeres med skjemaet «$1» her. Om siden finnes allerede vil du bli tatt med til skjemaet for redigering av den siden. Hvis ikke vil du bli tatt med til skjemaet for å opprette siden.",
- "sf_formstart_noform_docu": "Skriv inn navnet på siden her, og velg hvilket skjema du vil bruke til å redigere den. Om siden finnes allerede, vil du bli tatt med til skjemaet for redigering av den siden. Hvis ikke vil du bli tatt med til skjemaet for å opprette siden.",
- "sf_formstart_createoredit": "Opprett eller rediger",
- "formedit": "Rediger med skjema",
- "sf_formedit_createtitle": "Opprett $1: $2",
- "sf_formedit_createtitlenotarget": "Opprett $1",
- "sf_formedit_badurl": "Dette er siden for å redigere med et skjema. Du må angi både et skjemanavn og en målside i URL-en;\ndet burde se slik ut «Special:FormEdit?form=<skjemanavn>&target=<målside>», eller slik «Special:FormEdit/<skjemanavn>/<målside>».",
- "sf_formedit_altforms": "Du kan i stedet opprette siden ved å bruke et av følgende skjemaer:",
- "sf_formedit_altformsonly": "Velg blant disse skjemaene for å opprette siden:",
- "sf_formcreate": "Opprett med skjema",
- "sf_viewform": "Se skjema",
- "sf_editsource": "Rediger kilde",
- "sf_formedit_edittitle": "Rediger $1: $2",
- "sf_formedit_morethanoneform": "'''Advarsel:''' Mer enn ett standard skjema er definert for denne siden.",
- "sf_formedit_formwarning": "Advarsel: Denne siden <a href=\"$1\">finnes allerede</a>, men bruker ikke dette skjemaet.",
- "sf_formedit_mismatchedbrackets": "Advarsel: Denne siden har krøll- og/eller firkantparanteser som ikke er balanserte slik at den ikke blir korrekt håndtert av skjemaet. Vennligst <a href=\"$1\">fjern feilen i kildeteksten</a> før du går videre.",
- "sf_formedit_remove": "Fjern",
- "sf_formedit_addanother": "Legg til en til:",
- "sf_formedit_none": "Ingen",
- "sf_formedit_emptytitle": "Feil: De innlagte data resulterer i en tom sidetittel.",
- "sf_formedit_hookerror": "Feil: En MediaWiki-utvidelse forhindret endring av målsiden.",
- "sf_formedit_saveandcontinueediting": "Lagre og fortsett",
- "sf_formedit_saveandcontinue_summary": "Lagret ved å bruke \"$1\"-knappen i et skjema",
- "sf_formedit_tooltip_saveandcontinueediting": "Lagre data og fortsett redigering",
- "sf_autoedit_anoneditwarning": "Advarsel: Du er ikke innlogget. Din IP-adresse vil logges i denne sidens redigeringshistorikk.",
- "sf_autoedit_success": "Vellykket endring av [[$1]] med bruk av skjema $2.",
- "sf_autoedit_fail": "Endring av [[$1]] mislyktes.",
- "sf_autoedit_notargetspecified": "Ingen målside angitt.",
- "sf_autoedit_invalidtargetspecified": "Angitt målside $1 er ugyldig.",
- "sf_autoedit_invalidform": "$1 er ikke et gyldig skjema.",
- "sf_autoedit_redirectlimitexeeded": "Øvre grense for omdirigeringer av skjema $1 ble overskredet.",
- "sf_autoedit_invalidredirecttarget": "$1 er et ugyldig omdirigeringsmål for skjema $2.",
- "sf_autoedit_invalidpreloadspecified": "Angitt side $1 for preutfylling er ugyldig.",
- "sf_autoedit_redlinkexists": "$1 finnes allerede.",
- "sf_autoedit_noformfound": "Intet skjema angitt.",
- "sf_autoedit_toomanyformsfound": "Flere enn et skjema tilgjengelig for siden.",
- "sf_autoedit_readonly": "Databasen er nå låst mot endringer. Årsak: $1",
- "sf_autoedit_nosemanticform": "Finner ikke skjema $2 for side $1. Sjekk [[{{#special:FormEdit}}/$2/$1]] for detaljer.",
- "sf_autoedit_summary": "Automatisk redigert fra side $1.",
- "sf-autoedit-wait": "Vent...",
- "runquery": "Utfør spørring",
- "sf_runquery_badurl": "Du må angi et skjemanavn i nettadressen;\nnettadressen burde være på formen 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Utfør spørring: $1",
- "sf_runquery_additionalquery": "Tilleggsspørring",
- "sf_formerrors_header": "Det var feil i skjemaet ditt; se nedenfor",
- "sf_blank_error": "kan ikke være blank",
- "sf_bad_url_error": "må ha korrekt URL-format, inkludert 'http'",
- "sf_bad_email_error": "må ha gyldig format på e-postadressen",
- "sf_bad_number_error": "må være et gyldig tall",
- "sf_bad_date_error": "må være en gyldig dato",
- "uploadwindow": "Opplastingsvindu",
- "sf_deletionlog": "Slettingslogg",
- "sf-preview-header": "Forhåndsvisning av skjemaet",
- "sf-preview-note": "Slik vil skjemaet se ut i bruk:",
- "sf-pageschemas-pagenameformula": "Sidenavnsformel:",
- "sf-pageschemas-createtitle": "Skjematittel for nye sider:",
- "sf-pageschemas-edittitle": "Skjematittel for eksisterende sider:",
- "sf-pageschemas-inputtype": "Inndatatype (bruk blanktegn for å indikere standardverdi):",
- "sf_property_isproperty": "Dette er en egenskap av type $1.",
- "sf_property_linkstoform": "Det lenker til sider som bruker skjemaet $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Den tillatte verdien|De tillatte verdiene}} for denne egenskapen er:",
- "sf_template_docu": "Dette er malen «$1». Den burde kalles opp med følgende format:",
- "sf_template_docufooter": "Rediger siden for å se malteksten.",
- "sf_form_docu": "Dette er skjemaet «$1».\nFor å opprette en side med dette skjemaet, skriv inn sidenavnet under;\nom en side med det navnet finnes allerede vil du bli sendt til et skjema for redigering av den siden.",
- "sf_form_freetextlabel": "Fritekst",
- "sf_category_hasdefaultform": "Denne kategorien bruker skjemaet $1.",
- "sf_category_desc": "Dette er kategorien $1",
- "sf_blank_namespace": "Hoved",
- "right-viewedittab": "Vis «Rediger»-fanen for sider som kan redigeres via skjema",
- "right-editrestrictedfields": "Rediger begrensede skjemafelt",
- "right-createclass": "Opprett nye semantiske klasser",
- "action-createclass": "opprett nye semantiske klasser",
- "action-editrestrictedfields": "rediger begrensede skjemafelter",
- "action-viewedittab": "vis «Rediger»-fanen for sider som kan redigeres via skjema"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nds-nl.json b/SemanticForms/i18n/nds-nl.json
deleted file mode 100644
index 64114e85..00000000
--- a/SemanticForms/i18n/nds-nl.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Servien"
- ]
- },
- "sf_createform_add": "Derbie doon",
- "sf_editsource": "Bronkode bewarken"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nds.json b/SemanticForms/i18n/nds.json
deleted file mode 100644
index de74f305..00000000
--- a/SemanticForms/i18n/nds.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Joachim Mos",
- "Slomox"
- ]
- },
- "sf_createproperty_propname": "Naam:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Vörlagen",
- "createtemplate": "Stell een Vörlaag op",
- "sf_createtemplate_namelabel": "Vörlaagnaam:",
- "sf_createtemplate_deletefield": "Wegdoon",
- "sf_createform_template": "Vörlaag:",
- "createcategory": "Stell een Kategorie op",
- "sf_createcategory_name": "Naam:",
- "createclass": "Stell en Class op",
- "sf_createclass_create": "Opstellen"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/niu.json b/SemanticForms/i18n/niu.json
deleted file mode 100644
index d0e65002..00000000
--- a/SemanticForms/i18n/niu.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jose77"
- ]
- },
- "sf_createtemplate_deletefield": "Tamate"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nl.json b/SemanticForms/i18n/nl.json
deleted file mode 100644
index 304fb70e..00000000
--- a/SemanticForms/i18n/nl.json
+++ /dev/null
@@ -1,203 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "HanV",
- "JurgenNL",
- "McDutchie",
- "Rcdeboer",
- "SPQRobin",
- "Siebrand"
- ]
- },
- "semanticforms-desc": "Formulieren voor het toevoegen en bewerken van semantische gegevens",
- "specialpages-group-sf_group": "Semantische formulieren",
- "createproperty": "Eigenschap aanmaken",
- "sf-createproperty-with-name": "Eigenschap aanmaken: $1",
- "sf_createproperty_linktoform": "Deze eigenschap verwijst naar pagina's die het volgende formulier gebruiken:",
- "sf_createproperty_allowedvalsinput": "Als u wilt dat deze eigenschap een beperkt aantal waarden mag hebben, geef dan een lijst met toegelaten waarden in, door komma's gescheiden. Als een waarde een komma bevat, vervang deze dan door \"\\,\":",
- "sf_createproperty_propname": "Naam eigenschap:",
- "sf_createproperty_proptype": "Type:",
- "templates": "Sjablonen",
- "sf_templates_docu": "De onderstaande sjablonen bestaan in de wiki.",
- "sf_templates_definescat": "bepaalt categorie: $1",
- "createtemplate": "Sjabloon aanmaken",
- "sf-createtemplate-with-name": "Sjabloon aanmaken: $1",
- "sf_createtemplate_namelabel": "Sjabloonnaam:",
- "sf_createtemplate_multipleinstance": "Dit sjabloon kan meerdere keren worden ingevoegd op de pagina.",
- "sf_createtemplate_connectingproperty": "Naam van de eigenschap om de velden van deze sjabloon te koppelen met de rest van de pagina:",
- "sf_createtemplate_categorylabel": "Categorie bepaald door sjabloon (optioneel):",
- "sf_createtemplate_templatefields": "Sjabloonvelden",
- "sf_createtemplate_fieldsdesc": "Om de velden van een sjabloon geen verplichte veldnamen te laten hebben, kunt u de index van dat veld (bijvoorbeeld 1, 2, 3, enzovoort) als naam opgeven in plaats van de eigenlijke naam.",
- "sf_createtemplate_fieldname": "Veldnaam:",
- "sf_createtemplate_displaylabel": "Beschrijving:",
- "sf_createtemplate_semanticproperty": "Semantische eigenschap:",
- "sf_createtemplate_fieldislist": "Dit veld kan een lijst van waardes bevatten, gescheiden door komma's",
- "sf_createtemplate_aggregation": "Aggregatie",
- "sf_createtemplate_aggregationdesc": "Om op iedere pagina die van dit sjabloon gebruik maakt een lijst weer te geven van alle pagina's met een naar die pagina verwijzende eigenschap, geeft u de betreffende eigenschap hieronder aan:",
- "sf_createtemplate_aggregationlabel": "Naam voor lijst:",
- "sf_createtemplate_outputformat": "Uitvoeropmaak:",
- "sf_createtemplate_standardformat": "Tabel",
- "sf_createtemplate_infoboxformat": "Infobox zijkant",
- "sf_createtemplate_plainformat": "Tekst zonder opmaak",
- "sf_createtemplate_sectionsformat": "Kopjes",
- "sf_createtemplate_addfield": "Veld toevoegen",
- "sf_createtemplate_deletefield": "Verwijderen",
- "forms": "Formulieren",
- "sf_forms_docu": "De onderstaande formulieren bestaan in de wiki.",
- "sf_forminputs_mandatory": "Er moet een waarde ingevoerd worden voor deze invoer",
- "sf_forminputs_restricted": "Alleen beheerders kunnen deze invoer bewerken",
- "sf_forminputs_class": "Het HTML-\"klasse\"-attribuut voor deze invoer",
- "sf_forminputs_default": "De standaardwaarde voor deze invoer",
- "sf_forminputs_preload": "Eeen wikipagina waarvan de inhoud de standaardwaarde wordt",
- "sf_forminputs_property": "Een semantische eigenschap waar dit veld mee overeenkomt",
- "sf_forminputs_size": "De grootte van dit tekstveld, in tekens",
- "sf_forminputs_maxlength": "De maximale lengte van de tekst in dit veld",
- "sf_forminputs_placeholder": "Hulptekst die wordt weergegeven in het invoerveld totdat een gebruiker er op klikt",
- "sf_forminputs_uploadable": "Een koppeling \"{{int:upload}}\" toevoegen naast deze invoer",
- "sf_forminputs_defaultfilename": "De standaard bestandsnaam voor toegevoegde bestanden",
- "sf_forminputs_rows": "Het aantal rijen voor deze invoer",
- "sf_forminputs_cols": "Het aantal kolommen voor deze invoer",
- "sf_forminputs_autogrow": "Dit veld instellen om automatisch in grootte toe te nemen als de tekst buiten de randen dreigt te lopen",
- "sf_forminputs_valuesfromproperty": "Een eigenschap waarvan de waarden in de wiki de invoerwaarden voor dit veld zijn",
- "sf_forminputs_valuesfromcategory": "Een categorie waarvan de pagina's de invoer voor dit veld zijn",
- "sf_forminputs_valuesfromnamespace": "Een naamruimte waarvan de pagina's de invoer voor dit veld zijn",
- "sf_forminputs_valuesfromconcept": "Een Semantic MediaWikiconceptpagina waarvan de pagina's de invoer voor dit veld zijn",
- "sf_forminputs_valuesfromurl": "Een URL die de gestructureerde gegevens bevat die de invoer voor dit veld zijn",
- "sf_forminputs_values": "De kommegescheiden lijst met waarden voor dit veld",
- "sf_forminputs_list": "Deze invoer bevat een lijst met waarden",
- "sf_forminputs_delimiter": "Het scheidingsteken tussen veldwaarden als dit veld een lijst kan bevatten",
- "sf_forminputs_remoteautocompletion": "Automatisch invullen via externe server gebruiken",
- "sf_forminputs_existingvaluesonly": "Alleen waarden die al in de lijst aanwezig zijn toestaan",
- "sf_forminputs_showonselect": "Paginaelementen die alleen weergegeven moeten worden als bepaalde waarden zijn geselecteerd (voorbeeld: \"waarde1=>div1;waarde2=>div2\")",
- "sf_forminputs_listboxsize": "De hoogte van dit lijstveld, in rijen",
- "sf_forminputs_includetimezone": "Invoer voor de tijdzone opnemen",
- "sf_forminputs_topcategory": "De bovenliggende categorie van deze verzameling categorieën (vereist)",
- "sf_forminputs_hideroot": "De bovenliggende categorie verbergen",
- "sf_forminputs_depth": "Het aantal categorieniveaus dat aanvankelijk weergegeven moet worden",
- "sf_forminputs_height": "De hoogte van deze invoer, in pixels",
- "sf_forminputs_width": "De breedte van deze invoer, in pixels",
- "createform": "Formulier aanmaken",
- "sf-createform-with-name": "Formulier aanmaken: $1",
- "sf_createform_nameinput": "Formuliernaam",
- "sf_createform_nameinputdesc": "(het formulier krijgt meestal de naam van de hoofdsjabloon):",
- "sf_createform_template": "Sjabloon:",
- "sf_createform_templatelabelinput": "Sjabloonlabel (optioneel):",
- "sf_createform_allowmultiple": "Meerdere (of geen) instanties van dit sjabloon toestaan op de gemaakte pagina",
- "sf_createform_field": "Veld:",
- "sf_createform_fieldprop": "Dit veld bepaalt de eigenschap $1, van type $2.",
- "sf_createform_fieldproplist": "Dit veld bepaalt een lijst elementen die de eigenschap $1 hebben, van type $2.",
- "sf_createform_fieldpropunknowntype": "Dit veld bepaalt de eigenschap $1, van een onbepaald type.",
- "sf_createform_inputtype": "Invoertype:",
- "sf_createform_inputtypedefault": "(standaard)",
- "sf_createform_formlabel": "Formulierlabel:",
- "sf_createform_hidden": "Verborgen",
- "sf_createform_removetemplate": "Sjabloon verwijderen",
- "sf_createform_addtemplate": "Sjabloon toevoegen:",
- "sf_createform_atend": "Onderaan",
- "sf_createform_add": "Toevoegen",
- "sf_createform_choosefield": "Kies een veld om toe te voegen",
- "sf_createform_pagesection": "Paginasectie:",
- "sf_createform_addsection": "Sectie toevoegen",
- "sf_createform_removesection": "Sectie verwijderen",
- "sf_createform_before": "Voor sjabloon:",
- "sf_createform_addelements": "Elementen toevoegen",
- "sf_createform_hiddensection": "Deze invoer is verborgen in het formulier",
- "sf_createform_sectionlevel": "Sectieniveau:",
- "sf_createform_sectionname": "Sectienaam",
- "sf_createform_additembeforesave": "U moet ten minste één sjabloon toevoegen aan dit formulier voordat u het kunt opslaan.",
- "sf_createform_otherparameters": "Andere parameters",
- "createcategory": "Categorie aanmaken",
- "sf-createcategory-with-name": "Categorie aanmaken: $1",
- "sf_createcategory_name": "Categorienaam:",
- "sf_createcategory_defaultform": "Standaard formulier:",
- "sf_createcategory_makesubcategory": "Deze categorie een ondercategorie van een andere categorie maken (optioneel):",
- "createclass": "Klasse aanmaken",
- "sf_createclass_docu": "Voer hier alle gegevens in om de eigenschappen, de sjabloon, het formulier en de categorie voor één enkele klasse aan te maken.\nGebruik de pagina's $1 voor meer mogelijkheden.",
- "sf_createclass_allowedvalues": "Toegestane waarden:",
- "sf_createclass_listofvalues": "Lijst met waarden:",
- "sf_createclass_nameinput": "Formuliernaam:",
- "sf_createclass_missingvalues": "Niet alle verplichte velden zijn ingevuld.",
- "sf_createclass_success": "De eigenschappen, de sjabloon, het formulier en de categorie worden aangemaakt.",
- "sf_createclass_create": "Aanmaken",
- "formstart": "Pagina toevoegen met formulier",
- "sf_formstart_badform": "Fout: er is geen formulierpagina aangetroffen op \"$1\".",
- "sf_formstart_badtitle": "Fout: \"$1\" is een ongeldige paginanaam.",
- "sf_formstart_docu": "Voer hier de naam van de pagina in die bewerkt wordt met het formulier \"$1\".\nAls deze pagina al bestaat, wordt u doorgestuurd naar het formulier om die pagina te bewerken.\nAnders wordt u doorgestuurd naar het formulier om de pagina toe te voegen.",
- "sf_formstart_noform_docu": "Voer hier de naam van de pagina in en selecteer het formulier waarmee die bewerkt wordt.\nAls deze pagina al bestaat, wordt u doorgestuurd naar het formulier om die pagina te bewerken.\nAnders wordt u doorgestuurd naar het formulier om de pagina toe te voegen.",
- "sf_formstart_createoredit": "Aanmaken of bewerken",
- "formedit": "Bewerken met formulier",
- "sf_formedit_createtitle": "$1 aanmaken: $2",
- "sf_formedit_createtitlenotarget": "$1 aanmaken",
- "sf_formedit_badurl": "Op deze pagina kunt u bewerkingen uitvoeren met behulp van een formulier. Geef zowel een formuliernaam als een doelpagina op in de URL. Het hoort eruit te zien als \"Special:FormEdit?form=<formuliernaam>&target=<doelpagina>\" of \"Special:FormEdit/<formuliernaam>/<doelpagina>\".",
- "sf_formedit_altforms": "U kunt in de plaats deze pagina toevoegen met een van de volgende formulieren:",
- "sf_formedit_altformsonly": "Selecteer een van de volgende formulieren om deze pagina toe te voegen:",
- "sf_formcreate": "Via formulier aanmaken",
- "sf_viewform": "Formulier bekijken",
- "sf_editsource": "Bron bewerken",
- "sf_formedit_edittitle": "$1 bewerken: $2",
- "sf_formedit_morethanoneform": "'''Waarschuwing:''' er is meer dan één standaard formulier ingesteld voor deze pagina.",
- "sf_formedit_formwarning": "Waarschuwing: deze pagina <a href=\"$1\">bestaat al</a>, maar die gebruikt dit formulier niet.",
- "sf_formedit_mismatchedbrackets": "Waarschuwing: Deze pagina bevat accolades of blokhaken die niet worden gesloten, dus de pagina wordt niet juist afgehandeld door het formulier. <a href=\"$1\">Corrigeer de fout</a> voordat u doorgaat.",
- "sf_formedit_remove": "Instantie verwijderen",
- "sf_formedit_addanotherabove": "Nog een instantie toevoegen boven deze",
- "sf_formedit_addanother": "Volgende toevoegen",
- "sf_formedit_none": "Geen",
- "sf_formedit_emptytitle": "Fout: De toegevoegde gegevens leveren een lege paginanaam op.",
- "sf_formedit_hookerror": "Fout: een MediaWiki-uitbreiding voorkomt het wijzigen van de doelpagina.",
- "sf_formedit_saveandcontinueediting": "Opslaan en doorgaan",
- "sf_formedit_saveandcontinue_summary": "Opgeslagen met de knop \"$1\" in het formulier",
- "sf_formedit_tooltip_saveandcontinueediting": "Gegevens opslaan en doorgaan met bewerken",
- "sf_autoedit_anoneditwarning": "Waarschuwing: u bent niet aangemeld. Uw IP-adres wordt opgenomen in de bewerkingsgeschiedenis van deze pagina.",
- "sf_autoedit_success": "[[$1]] is gewijzigd via het formulier $2.",
- "sf_autoedit_fail": "Het wijzigen van [[$1]] is mislukt.",
- "sf_autoedit_notargetspecified": "Geen doelpagina opgegeven.",
- "sf_autoedit_invalidtargetspecified": "De opgegeven doelpagina '''$1''' is ongeldig.",
- "sf_autoedit_invalidform": "'''$1''' is geen geldig formulier.",
- "sf_autoedit_redirectlimitexeeded": "De drempelwaarde voor doorverwijzigen voor het formulier $1 is bereikt.",
- "sf_autoedit_invalidredirecttarget": "$1 is een ongeldig doel voor doorverwijzing voor het formulier $2.",
- "sf_autoedit_invalidpreloadspecified": "De opgegevens vooraf te laden pagina $1 is ongeldig.",
- "sf_autoedit_redlinkexists": "$1 bestaat al.",
- "sf_autoedit_noformfound": "Geen formulier opgegeven.",
- "sf_autoedit_toomanyformsfound": "Er is meer dan één formulier beschikbaar voor de pagina.",
- "sf_autoedit_readonly": "De database is momenteel afgesloten voor wijzigingen. Reden: $1",
- "sf_autoedit_nosemanticform": "Het formulier $2 voor pagina $1 kon niet geladen worden. Zie [[{{#special:FormEdit}}/$2/$1]] voor details.",
- "sf_autoedit_summary": "Automatisch bewerkt vanaf pagina $1.",
- "sf-autoedit-wait": "Een ogenblik geduld...",
- "runquery": "Zoekopdracht uitvoeren",
- "sf_runquery_badurl": "U moet een formuliernaam opgeven in de URL.\nDe URL moet er als volgt uitzien: \"Special:RunQuery/<formuliernaam>\".",
- "sf_runquery_title": "Zoekopdracht: $1",
- "sf_runquery_additionalquery": "Additionele zoekopdracht",
- "sf_formerrors_header": "Er zaten fouten in uw formulierinvoer. Details staan hieronder.",
- "sf_too_few_instances_error": "Er moeten tenminste $1 instanties van dit sjabloon zijn.",
- "sf_too_many_instances_error": "Er mogen niet meer dan $1 instanties van dit sjabloon zijn.",
- "sf_blank_error": "mag niet leeg blijven",
- "sf_bad_url_error": "moet de juiste URL hebben, beginnend met \"http\"",
- "sf_bad_email_error": "moet een geldig e-mailadres zijn",
- "sf_bad_number_error": "moet een geldig nummer zijn",
- "sf_bad_date_error": "moet een geldige datum zijn",
- "uploadwindow": "Uploadscherm",
- "sf_deletionlog": "Verwijderingslogboek",
- "sf-preview-header": "Voorvertoning van formulier",
- "sf-preview-note": "Zo ziet het formulier eruit wanneer het in gebruik is:",
- "sf-pageschemas-pagenameformula": "Paginanaamformule:",
- "sf-pageschemas-createtitle": "Naam voor het formulier voor nieuwe pagina's:",
- "sf-pageschemas-edittitle": "Naam voor het formulier voor bestaande pagina's:",
- "sf-pageschemas-inputtype": "Invoertype (laat leeg voor standaard instelling):",
- "sf-pageschemas-otherparams": "Geef de namen van de parameters en hun waarden op als \"sleutel=waarde\"-paren, gescheiden door komma's. Als een waarde een komma bevat, vervang dit dan door \"\\,\" Voorbeeld: $1.",
- "sf_property_isproperty": "Dit is een eigenschap van type $1.",
- "sf_property_linkstoform": "Deze verwijst naar pagina's die gebruikmaken van het formulier $1.",
- "sf_property_allowedvals": "De toegelaten {{PLURAL:$1|waarde voor deze eigenschap is|waarden voor deze eigenschap zijn}}:",
- "sf_template_docu": "Dit is de sjabloon \"$1\".\nGebruik het op de volgende wijze:",
- "sf_template_docufooter": "Bewerk de pagina om de sjabloontekst te bekijken.",
- "sf_form_docu": "Dit is het formulier \"$1\".\nOm een pagina aan te maken via dit formulier typt u de paginanaam hieronder in;\nals een pagina met die naam al bestaat, krijgt u het bewerkingsscherm te zien en kunt u die pagina via een formulier bewerken.",
- "sf_form_freetextlabel": "Vrije tekst",
- "sf_category_hasdefaultform": "Deze categorie gebruikt het formulier $1.",
- "sf_category_desc": "Dit is de categorie $1.",
- "sf_blank_namespace": "Hoofdnaamruimte",
- "right-viewedittab": "Tabblad \"{{int:edit}}\" zien op pagina's die via een formulier bewerkt kunnen worden",
- "right-editrestrictedfields": "Beperkte formuliervelden bewerken",
- "right-createclass": "Nieuwe semantische klassen aanmaken",
- "action-createclass": "nieuwe semantische klassen aan te maken",
- "action-editrestrictedfields": "beperkte formuliervelden te bewerken",
- "action-viewedittab": "het tabblad \"{{int:edit}}\" te zien voor pagina's die via een formulier te bewerken zijn"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nn.json b/SemanticForms/i18n/nn.json
deleted file mode 100644
index 54bdc821..00000000
--- a/SemanticForms/i18n/nn.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Gunnernett",
- "Harald Khan",
- "Jon Harald Søby",
- "Nghtwlkr",
- "Njardarlogar"
- ]
- },
- "semanticforms-desc": "Skjema for å leggja til og endra semantiske data",
- "specialpages-group-sf_group": "Semantiske skjema",
- "createproperty": "Opprett ein eigenskap",
- "sf_createproperty_linktoform": "Denne eigenskapen vil lenke til sider som nyttar skjemaet:",
- "sf_createproperty_allowedvalsinput": "Om du ønskjer at denne eigenskapen berre skal kunna ha visse verdiar, skriv inn lista over tillatne verdiar med verdiane skilde med komma (om ein verdi inneheld eit komma, erstatt det med «\\,»):",
- "sf_createproperty_propname": "Namn på eigenskap:",
- "sf_createproperty_proptype": "Type:",
- "templates": "Malar",
- "sf_templates_docu": "Følgjande malar finst på wikien.",
- "sf_templates_definescat": "definerer kategori: $1",
- "createtemplate": "Opprett ein mal",
- "sf_createtemplate_namelabel": "Malnamn:",
- "sf_createtemplate_categorylabel": "Kategori definert av mal (valfri):",
- "sf_createtemplate_templatefields": "Malfelt",
- "sf_createtemplate_fieldsdesc": "For at felta i malen ikkje lenger skal krevja feltnamn, skriv inn indeksnummeret til kvart felt (til dømes 1, 2, 3, osb.) som namn, i staden for eit faktisk namn:",
- "sf_createtemplate_fieldname": "Feltnamn:",
- "sf_createtemplate_displaylabel": "Vis merke:",
- "sf_createtemplate_semanticproperty": "Semantisk eigenskap:",
- "sf_createtemplate_fieldislist": "Dette feltet kan innehalda ei lista over verdiar skilde med komma",
- "sf_createtemplate_aggregation": "Aggregering",
- "sf_createtemplate_aggregationdesc": "For på kvar ei sida som nyttar denne malen, å lista opp alle artiklane med ein viss eigenskap som lenkjar til sida, oppgje eigenskapen nedanfor:",
- "sf_createtemplate_aggregationlabel": "Listetittel:",
- "sf_createtemplate_outputformat": "Resultatformat:",
- "sf_createtemplate_standardformat": "Standard",
- "sf_createtemplate_infoboxformat": "Infoboks på høgre sida:",
- "sf_createtemplate_addfield": "Legg til felt",
- "sf_createtemplate_deletefield": "Slett",
- "forms": "Skjema",
- "sf_forms_docu": "Følgjande skjema finst på wikien.",
- "sf_forminputs_mandatory": "Obligatorisk",
- "sf_forminputs_restricted": "Avgrensa (berre administratorar kan endra det)",
- "createform": "Opprett eit skjema",
- "sf_createform_nameinput": "Skjemanamn",
- "sf_createform_template": "Mal:",
- "sf_createform_templatelabelinput": "Malmerke (valfritt):",
- "sf_createform_allowmultiple": "Tillat fleire (eller ingen) instansar av denne malen på den oppretta sida",
- "sf_createform_field": "Felt:",
- "sf_createform_fieldprop": "Dette feltet definerer eigenskapen $1, av type $2.",
- "sf_createform_fieldproplist": "Dette feltet definerer ei lista over element som har eigenskapen $1, av type $2.",
- "sf_createform_fieldpropunknowntype": "Dette feltet definerer eigenskapen $1, av uspesifisert type.",
- "sf_createform_inputtype": "Innteksttype:",
- "sf_createform_inputtypedefault": "(standard)",
- "sf_createform_formlabel": "Skjemamerke:",
- "sf_createform_hidden": "Løynd",
- "sf_createform_removetemplate": "Fjern mal",
- "sf_createform_addtemplate": "Legg til mal:",
- "sf_createform_atend": "Ved slutten",
- "sf_createform_add": "Legg til",
- "sf_createform_choosefield": "Vel eit felt til å leggja til",
- "sf_createform_before": "Før mal:",
- "sf_createform_additembeforesave": "Du må leggja til minst ein mal til skjemaet før du kan lagra det.",
- "createcategory": "Opprett ein kategori",
- "sf_createcategory_name": "Kategorinamn:",
- "sf_createcategory_defaultform": "Standardskjema:",
- "sf_createcategory_makesubcategory": "Gjer dette til ein underkategori av ein annan kategori (valfritt):",
- "formstart": "Legg til ei sida gjennom eit skjema",
- "sf_formstart_badform": "Feil: fann ikkje noka skjemasida på $1",
- "sf_formstart_docu": "Skriv inn namnet på sida som skal bli endra med skjemaet «$1» her.\nOm sida finst frå før, vil du bli teken med til skjemaet for endring av ho.\nViss ikkje vil du bli teken med til skjemaet for å oppretta sida.",
- "sf_formstart_noform_docu": "Skriv inn namnet på sida her, og vel kva skjema du vil nytta til å endra ho. Om sida finst frå før, vil du bli teken med til skjemaet for endring av ho. Viss ikkje vil du bli teken med til skjemaet for å oppretta sida.",
- "sf_formstart_createoredit": "Opprett eller endr",
- "formedit": "Endra med skjema",
- "sf_formedit_createtitle": "Opprett $1: $2",
- "sf_formedit_badurl": "Dette er sida for å leggja til data. Du må oppgje både eit skjemanamn og ei målsida i adressa; det burde sjå slik ut: «Special:FormEdit?form=<skjemanamn>&target=<målsida>» eller slik ut: «Special:FormEdit/<skjemanamn>/<målsida>».",
- "sf_formedit_altforms": "Du kan i staden oppretta sida ved å nytta eitt av dei følgande skjemaa:",
- "sf_formedit_altformsonly": "Vel mellom desse skjemaa for å oppretta sida:",
- "sf_formcreate": "Opprett med skjema",
- "sf_viewform": "Sjå skjema",
- "sf_editsource": "Endra kjelda",
- "sf_formedit_edittitle": "Endra $1: $2",
- "sf_formedit_formwarning": "Åtvaring: Sida <a href=\"$1\">finst frå før</a>, men nyttar ikkje dette skjemaet.",
- "sf_formedit_remove": "Fjern",
- "sf_formedit_addanother": "Legg til enno ein",
- "sf_formedit_none": "Ingen",
- "sf_formerrors_header": "Det var feil i skjemaet ditt; sjå nedanfor",
- "sf_blank_error": "kan ikkje vera tom",
- "sf_bad_url_error": "må ha korrekt adresseformat, inkludert 'http'",
- "sf_bad_email_error": "må ha gyldig format på e-postadressa",
- "sf_bad_number_error": "må vera eit gyldig tal",
- "sf_bad_date_error": "må vera ein gyldig dato",
- "uploadwindow": "Opplastingsvindauga",
- "sf_property_isproperty": "Dette er ein eigenskap av typen $1.",
- "sf_property_linkstoform": "Det lenker til sida som nyttar skjemaet $1.",
- "sf_property_allowedvals": "Dei tillatne verdiane for denne eigenskapen er:",
- "sf_template_docu": "Dette er malen «$1».\nHan burde bli kalla opp med følgjande format:",
- "sf_template_docufooter": "Endra sida for å sjå malteksten.",
- "sf_form_docu": "Dette er skjemaet «$1».\nSkriv inn eit sidenamn nedanfor for å oppretta ei sida med dette skjemaet. Om ei sida med dette namnet finst frå før, vil du bli sendt til eit skjema for endring av ho.",
- "sf_form_freetextlabel": "Fritekst",
- "sf_category_hasdefaultform": "Denne kategorien nyttar skjemaet «$1».",
- "sf_category_desc": "Dett er kategorien $1.",
- "sf_blank_namespace": "Hovud"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/nso.json b/SemanticForms/i18n/nso.json
deleted file mode 100644
index 9899b459..00000000
--- a/SemanticForms/i18n/nso.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Mohau"
- ]
- },
- "sf_createproperty_propname": "Leina:",
- "sf_createproperty_proptype": "Mohuta:",
- "sf_createtemplate_deletefield": "Phumula",
- "sf_createform_add": "Lokela",
- "sf_createcategory_name": "Leina la sehlopha:",
- "sf_formedit_createtitle": "Hloma $1: $2",
- "sf_formedit_edittitle": "Fetola $1: $2"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/oc.json b/SemanticForms/i18n/oc.json
deleted file mode 100644
index 6643a1b3..00000000
--- a/SemanticForms/i18n/oc.json
+++ /dev/null
@@ -1,146 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Cedric31",
- "McDutchie"
- ]
- },
- "semanticforms-desc": "Formularis per apondre e modificar de donadas semanticas",
- "specialpages-group-sf_group": "Semantic Forms",
- "createproperty": "Definir una proprietat",
- "sf-createproperty-with-name": "Crear la proprietat :$1",
- "sf_createproperty_linktoform": "Aquesta proprietat ligarà cap a las paginas qu'utilizan lo formulari :",
- "sf_createproperty_allowedvalsinput": "Se decidètz qu'aqueste camp accèpta pas que d'unas valors, picatz la lista de las valors permesas, separadas per de virgulas. (Se una valor conten una virgula, remplaçat-la per « \\, ») :",
- "sf_createproperty_propname": "Nom de la proprietat :",
- "sf_createproperty_proptype": "Tipe :",
- "templates": "Modèls",
- "sf_templates_docu": "Los modèls seguents existisson dins lo wiki.",
- "sf_templates_definescat": "definís la categoria : $1",
- "createtemplate": "Crear un modèl",
- "sf-createtemplate-with-name": "Crear lo modèl :$1",
- "sf_createtemplate_namelabel": "Nom de modèl :",
- "sf_createtemplate_multipleinstance": "Aqueste modèl pòt èsser inclús mantun còp dins la pagina.",
- "sf_createtemplate_categorylabel": "Categoria definida per aqueste modèl (facultatiu) :",
- "sf_createtemplate_templatefields": "Camps de modèl",
- "sf_createtemplate_fieldsdesc": "Per un modèl qu'utiliza pas cap de nom pels camps, entratz simplament son indèx (exemples : 1, 2, 3, etc.) pel nom, al luòc del nom actual.",
- "sf_createtemplate_fieldname": "Nom del camp :",
- "sf_createtemplate_displaylabel": "Etiqueta per l'afichatge :",
- "sf_createtemplate_semanticproperty": "Proprietat de la semantica :",
- "sf_createtemplate_fieldislist": "Aqueste camp pòt conténer una lista de valors separadas per de virgulas.",
- "sf_createtemplate_aggregation": "Agregacion",
- "sf_createtemplate_aggregationdesc": "Per listar, sus cada pagina qu'utilizan aqueste modèl, totas las qu'an una proprietat que punta cap a aquesta pagina, indicatz la proprietat adeqüata çaijós :",
- "sf_createtemplate_aggregationlabel": "Títol per la lista :",
- "sf_createtemplate_outputformat": "Format de sortida :",
- "sf_createtemplate_standardformat": "Tablèu",
- "sf_createtemplate_infoboxformat": "Infobox laterala",
- "sf_createtemplate_plainformat": "Tèxte brut",
- "sf_createtemplate_sectionsformat": "Seccions",
- "sf_createtemplate_addfield": "Apondre un camp",
- "sf_createtemplate_deletefield": "Escafa",
- "forms": "Formularis",
- "sf_forms_docu": "Los formularis seguents existisson dins lo wiki.",
- "sf_forminputs_mandatory": "Obligatòri",
- "sf_forminputs_restricted": "Sols los administrators pòdon modificar aquesta entrada",
- "sf_forminputs_class": "L'atribut « classa » per aquesta annada",
- "sf_forminputs_default": "La valor per defaut per aquesta entrada",
- "createform": "Crear un formulari",
- "sf_createform_nameinput": "Nom de formulari",
- "sf_createform_nameinputdesc": "(lo nom del formulari es generalament lo meteis que son modèl principal) :",
- "sf_createform_template": "Modèl :",
- "sf_createform_templatelabelinput": "Etiqueta de modèl (facultatiu) :",
- "sf_createform_allowmultiple": "Permetre mantuna (o zèro) instància d'aqueste modèl dins la pagina creada",
- "sf_createform_field": "Camp :",
- "sf_createform_fieldprop": "Aqueste camp definís la proprietat $1, del tipe $2.",
- "sf_createform_fieldproplist": "Aqueste camp definís una lista dels elements qu'an la proprietat $1, del tipe $2.",
- "sf_createform_fieldpropunknowntype": "Aqueste camp definís la proprietat $1, d'un tipe non indicat.",
- "sf_createform_inputtype": "Tipe d'entrada :",
- "sf_createform_inputtypedefault": "(per defaut)",
- "sf_createform_formlabel": "Etiqueta dins lo formulari:",
- "sf_createform_hidden": "Amagat",
- "sf_createform_removetemplate": "Levar aqueste modèl",
- "sf_createform_addtemplate": "Apondre un modèl :",
- "sf_createform_atend": "A la fin",
- "sf_createform_add": "Apondre",
- "sf_createform_choosefield": "Causissètz un camp d'ajustar",
- "sf_createform_pagesection": "Seccion de la pagina :",
- "sf_createform_addsection": "Apondre una seccion",
- "sf_createform_removesection": "Levar una seccion",
- "sf_createform_before": "Abans lo modèl :",
- "sf_createform_addelements": "Apondre d'elements",
- "sf_createform_sectionlevel": "Nivèl de seccion :",
- "sf_createform_sectionname": "Nom de la seccion",
- "sf_createform_additembeforesave": "Vos cal apondre almens un modèl a aqueste formulari abans de lo poder salvar.",
- "sf_createform_otherparameters": "Autres paramètres",
- "createcategory": "Crear una categoria",
- "sf-createcategory-with-name": "Crear la categoria : $1",
- "sf_createcategory_name": "Nom de la categoria :",
- "sf_createcategory_defaultform": "Formulari per defaut :",
- "sf_createcategory_makesubcategory": "Crèa una soscategoria d'una autra categoria (facultatiu) :",
- "createclass": "Crear una classa",
- "sf_createclass_docu": "Especificatz aicí las donadas que servisson per crear las proprietats, modèl, formulari e categoria d’una classa. Per mai d’opcions, utilizatz puslèu las paginas $1.",
- "sf_createclass_allowedvalues": "Valors autorizadas :",
- "sf_createclass_listofvalues": "Lista de valors ?",
- "sf_createclass_nameinput": "Nom del formulari :",
- "sf_createclass_missingvalues": "Los camps obligatòris son pas estats emplenats totes.",
- "sf_createclass_success": "Las proprietats, modèl, formulari e categoria seràn creats.",
- "sf_createclass_create": "Crear",
- "formstart": "Apondre una pagina amb un formulari",
- "sf_formstart_badform": "Error : cap de pagina de formulari es pas estada trobada sus $1.",
- "sf_formstart_badtitle": "Error : « $1 » es un títol de pagina invalid.",
- "sf_formstart_docu": "Picatz aicí lo nom de la pagina destinada a èsser editada amb lo formulari « $1 ». Se aquesta pagina existís ja, seretz dirigit cap al formulari per l'editar. Dins lo cas contrari, seretz redirigit cap a lo que permet de l'apondre.",
- "sf_formstart_noform_docu": "Picatz aicí lo nom de la pagina puèi seleccionatz lo formulari amb lo qual serà editada. S'aquesta pagina existís ja, seretz dirigit cap al formulari per l'editar. Dins lo cas contrari, seretz redirigit cap a lo que permet de l'apondre.",
- "sf_formstart_createoredit": "Crear o modificar",
- "formedit": "Modificar amb un formulari",
- "sf_formedit_createtitle": "Crear $1 : $2",
- "sf_formedit_createtitlenotarget": "Crear $1",
- "sf_formedit_badurl": "Aquò es la pagina per apondre las donadas. Cal indicar un nom de formulari e una pagina cibla dins l'URL; l'URL se deu semblar a « Special:FormEdit?form=<nom de formulari>&target=<nom de pagina cibla> » o « Special:FormEdit/<nom de formulari>/<nom de pagina cibla> ».",
- "sf_formedit_altforms": "Podètz, a la plaça, apondre aquesta pagina amb un dels formularis seguents :",
- "sf_formedit_altformsonly": "Se vos plai, seleccionatz un dels formularis seguents per apondre aquesta pagina :",
- "sf_formcreate": "Crear amb un formulari",
- "sf_viewform": "Veire lo formulari",
- "sf_editsource": "Editar la font",
- "sf_formedit_edittitle": "Editar $1 : $2",
- "sf_formedit_morethanoneform": "Avertiment : Mai d’un formulari per defaut es especificat per aquesta pagina.",
- "sf_formedit_formwarning": "Atencion : aquesta pagina <a href=\"$1\">existís ja</a>, mas utiliza pas aqueste formulari.",
- "sf_formedit_remove": "Levar aquesta instància",
- "sf_formedit_addanother": "Apondre un autre",
- "sf_formedit_none": "Cap",
- "sf_autoedit_summary": "Modificat automaticament dempuèi la pagina $1.",
- "sf-autoedit-wait": "Pacientatz...",
- "runquery": "Executar la requèsta",
- "sf_runquery_badurl": "Vos cal un nom de formulari dins l'URL ;\nl'URL deuriá èsser coma « Special:RunQuery/<nom del formulari> ».",
- "sf_runquery_title": "Executar la requèsta : $1",
- "sf_runquery_additionalquery": "Requèsta adicionala",
- "sf_formerrors_header": "I a cèrtas errors dins lo formulari. Cf. çaijós.",
- "sf_too_few_instances_error": "I deu aver al mens $1 instàncias d'aqueste modèl.",
- "sf_too_many_instances_error": "I deu pas aver mai de $1 instàncias d'aqueste modèl.",
- "sf_blank_error": "pòt pas èsser blanc",
- "sf_bad_url_error": "deu aver un format URL corrècte, començant per « http »",
- "sf_bad_email_error": "deu aver un format corrècte d'adreça de corrièr electronic.",
- "sf_bad_number_error": "deu èsser un nombre valid",
- "sf_bad_date_error": "deu èsser una data valida",
- "uploadwindow": "Fenèstra de mandadís",
- "sf_deletionlog": "Istoric de las supressions",
- "sf-preview-header": "Apercebut del formulari",
- "sf-preview-note": "Aquí vesètz a qué se semblarà lo formulari un còp utilizat :",
- "sf-pageschemas-pagenameformula": "Formula del nom de pagina :",
- "sf-pageschemas-createtitle": "Títol del formulari per las paginas novèlas :",
- "sf-pageschemas-edittitle": "Títol del formulari per las paginas existentas :",
- "sf-pageschemas-inputtype": "Tipe d'entrada (daissatz-lo en blanc per la valor per defaut) :",
- "sf_property_isproperty": "Aquò es una proprietat del tipe $1.",
- "sf_property_linkstoform": "Liga cap a las paginas qu'utilizan lo formulari $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|La valor autorizada per aquesta proprietat es|Las valors autorizadas per aquesta proprietat son}} :",
- "sf_template_docu": "Aquò es lo modèl « $1 ». Deuriá èsser apelat segon lo format seguent :",
- "sf_template_docufooter": "Modificar la pagina per veire lo tèxte del modèl.",
- "sf_form_docu": "Aquò es lo formulari « $1 ».\nPer crear una pagina amb aqueste formulari, picatz lo nom de la pagina çaijós ;\nse una pagina amn aqueste nom existís ja, seretz dirigit cap a un formulari destinat a l'editar.",
- "sf_form_freetextlabel": "Tèxte liure",
- "sf_category_hasdefaultform": "Aquesta categoria utiliza lo formulari « $1 ».",
- "sf_category_desc": "Aquò es la categoria « $1 ».",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Veire l'onglet \"{{int:edit}}\" per las paginas modificablas via un formulari",
- "right-editrestrictedfields": "Modificar los camps restrenches dels formularis",
- "right-createclass": "Crear de classas semanticas novèlas",
- "action-createclass": "crear de classas semanticas novèlas",
- "action-editrestrictedfields": "Modificar los camps de formulari protegits",
- "action-viewedittab": "veire l’onglet \"{{int:edit}}\" per las paginas modificablas via un formulari"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/os.json b/SemanticForms/i18n/os.json
deleted file mode 100644
index abbcbfaf..00000000
--- a/SemanticForms/i18n/os.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Amikeco",
- "Bouron"
- ]
- },
- "sf_createproperty_proptype": "Тип:",
- "templates": "Шаблонтæ",
- "sf_createtemplate_deletefield": "Схафын",
- "sf_createform_template": "Шаблон:",
- "sf_formedit_none": "Нæй"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pa.json b/SemanticForms/i18n/pa.json
deleted file mode 100644
index c46ccc40..00000000
--- a/SemanticForms/i18n/pa.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Babanwalia"
- ]
- },
- "sf_editsource": "ਸਰੋਤ ਸੋਧੋ"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pdc.json b/SemanticForms/i18n/pdc.json
deleted file mode 100644
index 1c8c088e..00000000
--- a/SemanticForms/i18n/pdc.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Xqt"
- ]
- },
- "templates": "Moddle",
- "sf_createtemplate_deletefield": "Verwische",
- "sf_createform_template": "Moddel:",
- "sf_createform_add": "Dezu duh",
- "sf_formstart_createoredit": "Dezu duh odder ennere",
- "sf_formedit_createtitle": "Duh $1: $2 dezu",
- "sf_formedit_edittitle": "$1: $2 ennere",
- "sf_formedit_addanother": "Weidere dezu duh",
- "sf_formedit_none": "Ken",
- "sf_blank_namespace": "Blatt"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pfl.json b/SemanticForms/i18n/pfl.json
deleted file mode 100644
index f14d2801..00000000
--- a/SemanticForms/i18n/pfl.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Manuae"
- ]
- },
- "sf_createtemplate_deletefield": "Lesche",
- "sf_createform_hidden": "Vaschdegld"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pl.json b/SemanticForms/i18n/pl.json
deleted file mode 100644
index d5c1b3ca..00000000
--- a/SemanticForms/i18n/pl.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "BeginaFelicysym",
- "Chrumps",
- "Jwitos",
- "Maikking",
- "McMonster",
- "Odie2",
- "Sp5uhe",
- "ToSter",
- "WTM",
- "Woytecr"
- ]
- },
- "semanticforms-desc": "Formularze do dodawania i edycji danych semantycznych",
- "specialpages-group-sf_group": "Semantyczne formularze",
- "createproperty": "Utwórz właściwość",
- "sf-createproperty-with-name": "Tworzenie właściwości: $1",
- "sf_createproperty_linktoform": "Ta właściwość linkuje do stron, które korzystają z formularza",
- "sf_createproperty_allowedvalsinput": "Jeśli chcesz, aby ta właściwość mogła zawierać tylko określone wartości, podaj listę dozwolonych wartości oddzielonych przecinkami (jeśli wartość zawiera przecinek, zastąp go „\\,”):",
- "sf_createproperty_propname": "Nazwa właściwości",
- "sf_createproperty_proptype": "Typ",
- "templates": "Szablony",
- "sf_templates_docu": "Następujące szablony istnieją w przestrzeni wiki.",
- "sf_templates_definescat": "definiuje kategorię $1",
- "createtemplate": "Utwórz szablon",
- "sf-createtemplate-with-name": "Tworzenie szablonu: $1",
- "sf_createtemplate_namelabel": "Nazwa szablonu",
- "sf_createtemplate_connectingproperty": "Nazwa atrybutu łączącego pola szablonu z resztą strony:",
- "sf_createtemplate_categorylabel": "Kategoria zdefiniowana przez szablon (nieobowiązkowe)",
- "sf_createtemplate_templatefields": "Pola szablonu",
- "sf_createtemplate_fieldsdesc": "Aby pola szablonu nie wymagały nazw pól, wprowadź indeks dla każdego pola (np. 1, 2, 3 itd.) jako nazwę.",
- "sf_createtemplate_fieldname": "Nazwa pola",
- "sf_createtemplate_displaylabel": "Wyświetlana etykieta",
- "sf_createtemplate_semanticproperty": "Właściwość semantyczna",
- "sf_createtemplate_fieldislist": "Pole może zawierać listę wartości rozdzielonych przecinkami",
- "sf_createtemplate_aggregation": "Streszczenie",
- "sf_createtemplate_aggregationdesc": "Aby korzystając z tego szablonu wypisać na dowolnej stronie wszystkie strony, których pewna właściwość wskazuje na daną stronę, wybierz odpowiednią właściwość:",
- "sf_createtemplate_aggregationlabel": "Tytuł listy",
- "sf_createtemplate_outputformat": "Format wyjścia:",
- "sf_createtemplate_standardformat": "Tabela",
- "sf_createtemplate_infoboxformat": "Infoboks po prawej",
- "sf_createtemplate_plainformat": "Zwykły tekst",
- "sf_createtemplate_sectionsformat": "Sekcje",
- "sf_createtemplate_addfield": "Dodaj pole",
- "sf_createtemplate_deletefield": "Usuń",
- "forms": "Formularze",
- "sf_forms_docu": "Poniższe formularze są już zdefiniowane w przestrzeni wiki.",
- "sf_forminputs_mandatory": "Obowiązkowe",
- "sf_forminputs_restricted": "Te informacje wprowadzać mogą wyłącznie administratorzy",
- "sf_forminputs_class": "Atrybut HTML \"class\" dla tego pola wprowadzania danych",
- "sf_forminputs_default": "Wartość domyślna dla tego pola wprowadzania danych",
- "sf_forminputs_preload": "Strona wiki, której zawartość stanie się wartością domyślną tego pola",
- "sf_forminputs_property": "Cecha semantyczna, której odpowiada to pole",
- "sf_forminputs_size": "Rozmiar tego pola tekstowego, w znakach",
- "sf_forminputs_maxlength": "Maksymalna dozwolona długość tekstu w tym polu",
- "sf_forminputs_placeholder": "Tekst pomocy, który pojawia się wewnątrz pola, zanim użytkownik na nim kliknie",
- "sf_forminputs_uploadable": "Umieść łącze \"{{int:upload}}\" obok tego pola",
- "sf_forminputs_defaultfilename": "Domyślna nazwa pliku dla wysyłanych plików",
- "sf_forminputs_rows": "Liczba wierszy dla tego wprowadzania",
- "sf_forminputs_cols": "Liczba kolumn dla tego wprowadzania",
- "sf_forminputs_hideroot": "Ukryj kategorię nadrzędną",
- "createform": "Utwórz formularz",
- "sf-createform-with-name": "Tworzenie formularza: $1",
- "sf_createform_nameinput": "Nazwa formularza",
- "sf_createform_nameinputdesc": "(zwyczajowo nazwa formularza jest taka sama ja nazwa jego podstawowego szablonu)",
- "sf_createform_template": "Szablon",
- "sf_createform_templatelabelinput": "Etykieta szablonu (nieobowiązkowa)",
- "sf_createform_allowmultiple": "Zezwól na wielokrotne użycie lub nieużycie tego szablonu na tworzonej stronie",
- "sf_createform_field": "Pole:",
- "sf_createform_fieldprop": "To pole definiuje właściwość $1 typu $2.",
- "sf_createform_fieldproplist": "To pole definiuje listę elementów, które mają właściwość $1 typu $2.",
- "sf_createform_fieldpropunknowntype": "To pole definiuje właściwość $1 nieznanego typu.",
- "sf_createform_inputtype": "Podaj typ",
- "sf_createform_inputtypedefault": "(wartość domyślna)",
- "sf_createform_formlabel": "Etykieta formularza",
- "sf_createform_hidden": "Ukryte",
- "sf_createform_removetemplate": "Usuń szablon",
- "sf_createform_addtemplate": "Dodaj szablon",
- "sf_createform_atend": "Na końcu",
- "sf_createform_add": "Dodaj",
- "sf_createform_choosefield": "Wybierz pole do dodania",
- "sf_createform_addsection": "Dodaj sekcję",
- "sf_createform_removesection": "Usuń sekcję",
- "sf_createform_before": "Przed szablonem",
- "sf_createform_addelements": "Dodaj elementy",
- "sf_createform_sectionname": "Nazwa sekcji",
- "sf_createform_additembeforesave": "Musisz dodać przynajmniej jeden szablon do tego formularza, zanim go zapiszesz.",
- "sf_createform_otherparameters": "Inne parametry",
- "createcategory": "Utwórz kategorię",
- "sf-createcategory-with-name": "Tworzenie kategorii: $1",
- "sf_createcategory_name": "Nazwa kategorii",
- "sf_createcategory_defaultform": "Domyślny formularz",
- "sf_createcategory_makesubcategory": "Uczyń tę kategorię podkategorią innej kategorii (nieobowiązkowe)",
- "createclass": "Utwórz klasę",
- "sf_createclass_docu": "Wpisz wszystkie informacje, aby utworzyć właściwości, szablon, formularz oraz kategorię dla pojedynczej klasy. Większa liczba opcji dostępna jest na stronie $1.",
- "sf_createclass_allowedvalues": "Dopuszczalne wartości:",
- "sf_createclass_listofvalues": "Lista wartości?",
- "sf_createclass_missingvalues": "Nie zostały wypełnione wszystkie wymagane pola.",
- "sf_createclass_success": "Zostaną utworzone: własności, szablon, formularz oraz kategoria.",
- "sf_createclass_create": "Utwórz",
- "formstart": "Dodaj stronę z formularzem",
- "sf_formstart_badform": "Błąd – na $1 nie odnaleziono żadnego formularza",
- "sf_formstart_badtitle": "Błąd – „$1” nie jest prawidłową nazwą strony.",
- "sf_formstart_docu": "Wprowadź tutaj nazwę strony, która ma być edytowana z użyciem formularza „$1”.\nJeśli strona istnieje, zostanie otwarta do edycji w tym formularzu.\nW przeciwnym wypadku będziesz mógł edytować z użyciem formularza nową stronę.",
- "sf_formstart_noform_docu": "Wprowadź tutaj nazwę strony, a następnie wybierz formularz z użyciem którego ma być edytowana.\nJeśli strona istnieje, zostanie otwarta do edycji w tym formularzu.\nW przeciwnym wypadku będziesz mógł edytować z użyciem formularza nową stronę.",
- "sf_formstart_createoredit": "Utwórz lub edytuj",
- "formedit": "Edytuj korzystając z formularza",
- "sf_formedit_createtitle": "Utwórz $1: $2",
- "sf_formedit_createtitlenotarget": "Tworzenie $1",
- "sf_formedit_badurl": "Tę stronę edytuje się przy użyciu formularza. Musisz określić w adresie URL nazwę formularza i stronę docelową. Powinno to wyglądać podobnie do „Special:FormEdit?form=<nazwa formularza>&target=<strona docelowa>” lub „Special:FormEdit/<nazwa formularza>/<strona docelowa>”.",
- "sf_formedit_altforms": "Zamiast tego możesz dodać stronę z jednym z następujących formularzy:",
- "sf_formedit_altformsonly": "Wybierz jeden z poniższych formularzy, aby dodać tę stronę:",
- "sf_formcreate": "Utwórz korzystając z formularza",
- "sf_viewform": "Zobacz formularz",
- "sf_editsource": "Edytuj źródło",
- "sf_formedit_edittitle": "Edytuj $1: $2",
- "sf_formedit_morethanoneform": "'''Uwaga''' – dla tej strony zdefiniowano więcej niż jeden domyślny formularz.",
- "sf_formedit_formwarning": "Uwaga – ta strona <a href=\"$1\">już istnieje</a>, ale nie używa tego formularza.",
- "sf_formedit_remove": "Usuń tę instancję",
- "sf_formedit_addanother": "Dodaj kolejny",
- "sf_formedit_none": "Brak",
- "sf_formedit_saveandcontinueediting": "Zapisz i kontynuuj",
- "sf_formedit_tooltip_saveandcontinueediting": "Zapisz dane i kontynuuj edycję",
- "sf_autoedit_fail": "Modyfikacja [[$1]] nie powiodła się.",
- "sf_autoedit_notargetspecified": "Nie określono strony docelowej.",
- "sf_autoedit_redlinkexists": "$1 już istnieje.",
- "sf-autoedit-wait": "Czekaj...",
- "runquery": "Uruchom zapytanie",
- "sf_runquery_badurl": "Musisz podać nazwę formularza w adresie URL,\nktóry powinien wyglądać podobnie do „Specjalna:RunQuery/<nazwa formularza>”.",
- "sf_runquery_title": "Uruchom zapytanie: $1",
- "sf_runquery_additionalquery": "Dodatkowe zapytanie",
- "sf_formerrors_header": "We wprowadzonych przez Ciebie danych wystąpiły błędy; zobacz poniżej",
- "sf_blank_error": "nie może pozostać puste",
- "sf_bad_url_error": "musi mieć poprawny format adresu URL, rozpoczynającego się od „http”",
- "sf_bad_email_error": "musi mieć poprawny format adresu e‐mail",
- "sf_bad_number_error": "musi być poprawną liczbą",
- "sf_bad_date_error": "musi być poprawną datą",
- "uploadwindow": "Okno przesyłania plików",
- "sf_deletionlog": "Rejestr usunięć",
- "sf_property_isproperty": "To jest właściwość typu $1.",
- "sf_property_linkstoform": "Linkuje do stron, używających formularza $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Dopuszczalna wartość dla tej własności to|Dopuszczalne wartości dla tej własności to:}}",
- "sf_template_docu": "To jest szablon „$1”.\nPowinien zostać wywołany w następującym formacie:",
- "sf_template_docufooter": "Edytuj stronę, aby zobaczyć tekst szablonu.",
- "sf_form_docu": "To jest formularz „$1”.\nAby dodać stronę za pomocą tego formularza, wpisz poniżej nazwę strony.\nJeśli strona o tej nazwie już istnieje, otwarty zostanie formularz edycji tej strony.",
- "sf_form_freetextlabel": "Dowolny tekst",
- "sf_category_hasdefaultform": "Ta kategoria używa formularza $1.",
- "sf_category_desc": "To jest kategoria $1.",
- "sf_blank_namespace": "Główna",
- "right-viewedittab": "Widoczność zakładki „{{int:edit}}” dla stron, które można edytować korzystając z formularza",
- "right-editrestrictedfields": "Edycja zabezpieczonych pól formularzy"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pms.json b/SemanticForms/i18n/pms.json
deleted file mode 100644
index 55054cc0..00000000
--- a/SemanticForms/i18n/pms.json
+++ /dev/null
@@ -1,188 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Borichèt",
- "Dragonòt",
- "McDutchie"
- ]
- },
- "semanticforms-desc": "Formolari për gionté e selessioné dat semàntich",
- "specialpages-group-sf_group": "Formolari Semàntich",
- "createproperty": "Crea na proprietà",
- "sf-createproperty-with-name": "Creé la propietà: $1",
- "sf_createproperty_linktoform": "Sta proprietà-sì a mandrà a le pàgine ch'a deuvro ël formolari:",
- "sf_createproperty_allowedvalsinput": "S'a veul che costa proprietà-sì a peussa mach avèj serti valor, ch'a anserissa la lista dij valor possìbij, separà da 'd vìrgole (se un valor a conten na vìrgola, rimpiassla con \"\\,\"):",
- "sf_createproperty_propname": "Nòm dla proprietà:",
- "sf_createproperty_proptype": "Sòrt:",
- "templates": "Stamp",
- "sf_templates_docu": "Ant la wiki a esisto jë stamp sì-sota.",
- "sf_templates_definescat": "a definiss la categorìa: $1",
- "createtemplate": "Crea në stamp",
- "sf-createtemplate-with-name": "Creé lë stamp: $1",
- "sf_createtemplate_namelabel": "Nòm ëd lë stamp:",
- "sf_createtemplate_multipleinstance": "Së stamp a peul esse anserì vàire vòte ant la pàgina.",
- "sf_createtemplate_connectingproperty": "Nòm ëd la propietà për coleghé ij camp ëd së stamp për ël rest ëd la pàgina:",
- "sf_createtemplate_categorylabel": "Categorìa definìa da stamp (opsional):",
- "sf_createtemplate_templatefields": "Camp dë stamp",
- "sf_createtemplate_fieldsdesc": "Përché ij camp an sto stamp-sì a ciamo pa pi dij nòm ëd camp, ch'a anserissa mach l'ìndes ëd minca camp (për esempi 1, 2, 3, e via fòrt) për nòm, nopà dël nòm ver.",
- "sf_createtemplate_fieldname": "Nòm dël camp:",
- "sf_createtemplate_displaylabel": "Tichëtta për la visualisassion:",
- "sf_createtemplate_semanticproperty": "Proprietà semàntica:",
- "sf_createtemplate_fieldislist": "Sto camp-sì a peul ten-e na lista ëd valor, separà da vìrgole",
- "sf_createtemplate_aggregation": "Agregassion",
- "sf_createtemplate_aggregationdesc": "Për listé, su minca pàgina ch'a deuvra sto stamp-sì, tute le pàgine ch'a l'han na serta proprietà ch'a ponta a cola pàgina, ch'a spessìfica sì-sota la proprietà ch'a-i va:",
- "sf_createtemplate_aggregationlabel": "Tìtol për lista:",
- "sf_createtemplate_outputformat": "Formà ëd surtìa:",
- "sf_createtemplate_standardformat": "Tàula",
- "sf_createtemplate_infoboxformat": "Quàder d'anformassion lateral",
- "sf_createtemplate_plainformat": "Mach test",
- "sf_createtemplate_sectionsformat": "Session",
- "sf_createtemplate_addfield": "Gionté un camp",
- "sf_createtemplate_deletefield": "Scancelé",
- "forms": "Formolari",
- "sf_forms_docu": "Ij formolari sì-sota a esisto ant la wiki.",
- "sf_forminputs_mandatory": "Obligatòri",
- "sf_forminputs_restricted": "Mach j'aministradtor a peulo modifiché cost anseriment",
- "sf_forminputs_class": "L'atribù \"class\" HTML për cost anseriment",
- "sf_forminputs_default": "Ël valor dë stàndard për cost anseriment",
- "sf_forminputs_preload": "Na pàgina wiki dont ël contnù a dventrà ël valor dë standard ëd cost anseriment",
- "sf_forminputs_property": "Na propietà semantica a la qual ës camp a corëspond",
- "sf_forminputs_size": "La dimension d'ës camp ëd test, an caràter",
- "sf_forminputs_maxlength": "La màssima longheur possìbil dël test ant ës camp",
- "sf_forminputs_placeholder": "Test d'agiut ch'as vëdd ant l'anseriment fin che l'utent a jë sgnaca dzora",
- "sf_forminputs_uploadable": "Ch'a buta na liura \"carié l'archivi\" da banda ëd cost anseriment",
- "sf_forminputs_defaultfilename": "Ël nòm d'archivi stàndard për j'archivi carià",
- "sf_forminputs_rows": "Ël nùmer ëd righe për cost anseriment",
- "sf_forminputs_cols": "Ël nùmer ëd colòne për cost anseriment",
- "sf_forminputs_autogrow": "Amposté cost anseriment për agrandisse an dimension se ël test a passa ij lìmit",
- "sf_forminputs_valuesfromproperty": "Na propietà dont ij valor ant la wiki a dovrìo esse l'ansema dij valor ëd cost anseriment",
- "sf_forminputs_valuesfromcategory": "Na categorìa dont le pàgine a dovrìo esse l'ansema dij calor ëd cost anseriment",
- "sf_forminputs_valuesfromnamespace": "Në spassi nominal dont le pagine dovrìo esse l'ansema dij valor ëd cost anseriment",
- "sf_forminputs_valuesfromconcept": "Na pàgina \"concet\" ëd Semantic MediaWiki dont le pàgine a dovrìo esse l'ansema dij valor ëd cost anseriment",
- "sf_forminputs_valuesfromurl": "N'anliura ch'a ten dij dat struturà ch'a dovrìo esse l'ansema dij valor ëd cost anseriment",
- "sf_forminputs_values": "L'ansema dij valor për cost anseriment, separà da 'd vìrgole",
- "sf_forminputs_list": "Marché s'anseriment com tnisand na lista ëd valor",
- "sf_forminputs_delimiter": "Ël separator tra ij valor dël camp, se cost anseriment a na ten na lista",
- "sf_forminputs_remoteautocompletion": "Dovré ël completament automàtich da leugn",
- "sf_forminputs_existingvaluesonly": "Përmëtte mach ij valor già ant la lista",
- "sf_forminputs_showonselect": "Element ëd pàgina da mostré mach se serti valor a son selessionà (esempi: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "L'autëssa ëd costa zòna ëd lista, an righe",
- "sf_forminputs_includetimezone": "Gionté un camp për ël fus orari",
- "sf_forminputs_topcategory": "La categorìa pare dë st'ansema ëd categorìe (obligatòria)",
- "sf_forminputs_hideroot": "Stërmé la categorìa mare",
- "sf_forminputs_depth": "Ël nùmer ëd livej ëd categorìe da mostré inissialment",
- "sf_forminputs_height": "L'autëssa ëd cost anseriment, an pontin",
- "sf_forminputs_width": "La larghëssa ëd cost anseriment, an pontin",
- "createform": "Creé un formolari",
- "sf-createform-with-name": "Creé ël formolari: $1",
- "sf_createform_nameinput": "Nòm dël formolari",
- "sf_createform_nameinputdesc": "(al formolari a l'é dàit normalment ël midem nòm dël sò stamp prinsipal):",
- "sf_createform_template": "Stamp:",
- "sf_createform_templatelabelinput": "Etichëtta dlë stamp (opsional):",
- "sf_createform_allowmultiple": "Përmëtte d'istanse mùltiple (o gnun-e) dë sto stamp-sì ant la pàgina creà",
- "sf_createform_field": "Camp:",
- "sf_createform_fieldprop": "Sto camp-sì a definiss la proprietà $1, ëd sòrt $2.",
- "sf_createform_fieldproplist": "Sto camp-sì a definiss na lista d'element ch'a l'han la proprietà $1, ëd sòrt $2.",
- "sf_createform_fieldpropunknowntype": "Sto camp-sì a definiss la proprietà $1, ëd sòrt pa spessificà.",
- "sf_createform_inputtype": "Tipo d'ingress:",
- "sf_createform_inputtypedefault": "(stàndard)",
- "sf_createform_formlabel": "Etichëtta dël formolari:",
- "sf_createform_hidden": "Stërmà",
- "sf_createform_removetemplate": "Gavé lë stamp",
- "sf_createform_addtemplate": "Gionté në stamp:",
- "sf_createform_atend": "A la fin",
- "sf_createform_add": "Gionta",
- "sf_createform_choosefield": "Sern un camp da gionté",
- "sf_createform_before": "Prima dlë stamp:",
- "sf_createform_additembeforesave": "A dev gionté almanch në stamp a cost formolari-sì prima ëd podèj salvelo.",
- "createcategory": "Crea na categorìa",
- "sf-createcategory-with-name": "Creé la categorìa: $1",
- "sf_createcategory_name": "Nòm dla categorìa:",
- "sf_createcategory_defaultform": "Formolari dë stàndard:",
- "sf_createcategory_makesubcategory": "Fé vnì sta categorìa-sì na sot-categorìa ëd n'àutra categorìa (opsional):",
- "createclass": "Crea na class",
- "sf_createclass_docu": "Ch'a anseriss sì tùit ij dat për creé le proprietà, stamp, formolari e categorìa për na sìngola class. Për pi d'opsion, ch'a deuvra pitòst le pàgine $1.",
- "sf_createclass_allowedvalues": "Valor përmëttù:",
- "sf_createclass_listofvalues": "Lista ëd valor?",
- "sf_createclass_nameinput": "Nòm dël formolari:",
- "sf_createclass_missingvalues": "Pa tùit ij camp ciamà a son stàit ampinì.",
- "sf_createclass_success": "Proprietà, stamp, formolari e categorìa a saran creà.",
- "sf_createclass_create": "Crea",
- "formstart": "Gionté na pàgina con un formolari",
- "sf_formstart_badform": "Eror: gnun-a pàgina ëd formolari a l'é stàita trovà a $1",
- "sf_formstart_badtitle": "Eror: \"$1\" a l'é un tìtol pa bon për na pàgina.",
- "sf_formstart_docu": "Ch'a anserissa ël nòm ëd la pàgina ambelessì, da modifiché con ël formolari \"$1\".\nSe sta pàgina-sì a esist già, a sarà mandà al formolari për modifiché cola pàgina.\nDësnò, a sarà mandà al formolari për gionté la pàgina.",
- "sf_formstart_noform_docu": "Ch'a anserissa ël nòm ëd la pàgina ambelessì, e ch'a selession-a ël formolari për modifichela.\nSe sta pàgina-sì a esist già, a sarà mandà al formolari për modifiché cola pàgina.\nDësnò, a sarà mandà al formolari për gionté la pàgina.",
- "sf_formstart_createoredit": "Crea o modìfica",
- "formedit": "Modifiché con un formolari",
- "sf_formedit_createtitle": "Crea $1: $2",
- "sf_formedit_createtitlenotarget": "Crea $1",
- "sf_formedit_badurl": "Costa-sì a l'é la pàgina për modifiché con un formolari. A dev spessifiché sia un nòm ëd formolari sia na pàgina obietiv ant l'adrëssa dl'aragnà;\na dovrìa smijé a 'Special:FormEdit?form=<form name>&target=<nòm dla pàgina>', or\n'Special:FormEdit/<form name>/<nòm dla pàgina>'.",
- "sf_formedit_altforms": "A peul anvece gionté sta pàgina-sì con un dij formolari sì-sota:",
- "sf_formedit_altformsonly": "Për piasì, ch'a selession-a un dij formolari sì-sota për gionté costa pàgina:",
- "sf_formcreate": "Creé con un formolari",
- "sf_viewform": "Visualisé ël formolari",
- "sf_editsource": "Modifiché la sorgiss",
- "sf_formedit_edittitle": "Modìfica $1: $2",
- "sf_formedit_morethanoneform": "'''Atension:''' Pi che un formolari dë stàndard a l'é spessificà për costa pàgina.",
- "sf_formedit_formwarning": "Atension: Sta pàgina-sì <a href=\"$1\">a esist già</a>, ma a deuvra pa cost formolari.",
- "sf_formedit_mismatchedbrackets": "Avis: Costa pàgina a conten dle parèntes grafe o quadrà ch'a son nen sarà, parèj la pàgina a sarà pa gestìa coretament dal formolari. Për piasì, <a href=\"$1\">ch'a coregia l'eror ant ël test ëd la sorgiss</a> prima d'andé anans.",
- "sf_formedit_remove": "Gava",
- "sf_formedit_addanother": "Gionté n'àutr",
- "sf_formedit_none": "Gnun",
- "sf_formedit_emptytitle": "Eror: Ij dat anserì a dan un tìtol ëd pàgina veuid.",
- "sf_formedit_hookerror": "Eror: N'estension ëd MediaWiki a l'ha vietà la modìfica dla pàgina destinassion.",
- "sf_formedit_saveandcontinueediting": "Salva e continua",
- "sf_formedit_saveandcontinue_summary": "Salva dovrand ël boton \"$1\" ant ël formolari",
- "sf_formedit_tooltip_saveandcontinueediting": "Salva ij dat e continua a modifiché",
- "sf_autoedit_anoneditwarning": "Atension: a l'é nen intrà ant ël sistema. Soa adrëssa IP a sarà memorisà ant la stòria dle modìfiche ëd sa pàgina.",
- "sf_autoedit_success": "[[$1]] modificà për da bin an dovrand ël formolari $2.",
- "sf_autoedit_fail": "Modìfica [[$1]] falìa.",
- "sf_autoedit_notargetspecified": "Gnun-a pàgina ëd destinassion specificà.",
- "sf_autoedit_invalidtargetspecified": "La pàgina ëd destinassion specificà $1 a l'é pa bon-a.",
- "sf_autoedit_invalidform": "$1 a l'é un formolari pa bon.",
- "sf_autoedit_redirectlimitexeeded": "Ël lìmit màssim ëd ridiression për ël formolari $1 a l'é stàit sorpassà.",
- "sf_autoedit_invalidredirecttarget": "$1 a l'é na destinassion ëd ridiression ch'a va nen bin për ël formolari $2.",
- "sf_autoedit_invalidpreloadspecified": "La pàgina ëd precariagi specificà $1 a l'é pa bon-a.",
- "sf_autoedit_redlinkexists": "$1 a esist già.",
- "sf_autoedit_noformfound": "Gnun formolari specificà.",
- "sf_autoedit_toomanyformsfound": "Pi che un formolari disponìbil për la pàgina.",
- "sf_autoedit_readonly": "La base ëd dàit a l'é al moment blocà për le modìfiche. Rason: $1",
- "sf_autoedit_nosemanticform": "As peul pa oten-se ël formolari $2 për la pàgina $1. Ch'a vëdda [[{{#special:FormEdit}}/$2/$1]] për ij detaj.",
- "sf_autoedit_summary": "Modificà automaticament da la pàgina $1.",
- "sf-autoedit-wait": "Speté...",
- "runquery": "Consulté la base dat",
- "sf_runquery_badurl": "A deuv spessifiché un nòm ëd formolari ant l'adrëssa dl'aragnà;\nl'adrëssa a dovrìa esse com 'Special:RunQuery/<nom del formolari>'.",
- "sf_runquery_title": "Fé andé l'arcesta: $1",
- "sf_runquery_additionalquery": "Arcesta adissional",
- "sf_formerrors_header": "A-i son ëstaje d'eror con l'imission ëd sò formolari; beiché sì-sota",
- "sf_blank_error": "a peul pa esse veuid",
- "sf_bad_url_error": "a deuv avèj ël formà d'adrëssa giust, partend con 'http'",
- "sf_bad_email_error": "a deuv avèj un formà bon ëd l'adrëssa ëd pòsta eletrònica",
- "sf_bad_number_error": "a deuv esse un nùmer bon",
- "sf_bad_date_error": "a deuv esse na data bon-a",
- "uploadwindow": "Carié la fnestra",
- "sf_deletionlog": "Registr djë scancelament",
- "sf-preview-header": "Previsualisassion dël formolari",
- "sf-preview-note": "Sòn a l'é lòn che ël formolari a smijerà quans as dovrerà:",
- "sf-pageschemas-pagenameformula": "Fórmola dël nòm ëd pàgina:",
- "sf-pageschemas-createtitle": "Tìtol dël formolari për le pàgine neuve:",
- "sf-pageschemas-edittitle": "Tìtol dël formolari për le pàgine esistente:",
- "sf-pageschemas-inputtype": "Sòrt d'anseriment (lassé veuid për amposté a predefinì):",
- "sf_property_isproperty": "Costa-sì a l'é na proprietà ëd sòrt $1.",
- "sf_property_linkstoform": "A colega a le pàgine ch'a deuvro ël formolari $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Ël valor përmëttù për sta proprietà-sì a l'é|Ij valor përmëttù për sta proprietà-sì a son}}:",
- "sf_template_docu": "Cost-sì a l'é lë stamp \"$1\".\nA dovrìa esse arciamà ant ël formà sì-sota:",
- "sf_template_docufooter": "Modìfica la pàgina për vëdde ël test ëd lë stamp.",
- "sf_form_docu": "Cost-sì a l'é ël formolari \"$1\".\nPër creé na pàgina con cost formolari, ch'a anserissa ël nòm ëd la pàgina sì-sota;\nse na pàgina con col nòm a esist già, a sarà mandà a 'n formolari për modifiché cola pàgina.",
- "sf_form_freetextlabel": "Test lìber.",
- "sf_category_hasdefaultform": "Sta categorìa-sì a deuvra ël formolari $1.",
- "sf_category_desc": "Costa a l'é la categorìa $1.",
- "sf_blank_namespace": "Prinsipal",
- "right-viewedittab": "Visualisé la scheda \"{{int:edit}}\" për le pàgine modificàbij con un formolari",
- "right-editrestrictedfields": "Modìfiché ij camp ëd formolari arservà",
- "right-createclass": "Creé ëd neuve classe semàntiche",
- "action-createclass": "creé ëd neuve classe semàntiche",
- "action-editrestrictedfields": "modìfiché ij camp ëd formolari arservà",
- "action-viewedittab": "visualisé la scheda \"{{int:edit}}\" për le pàgine modificàbij da formolari"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ps.json b/SemanticForms/i18n/ps.json
deleted file mode 100644
index 0151bea7..00000000
--- a/SemanticForms/i18n/ps.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ahmed-Najib-Biabani-Ibrahimkhel"
- ]
- },
- "createproperty": "يوه ځانتيا ځانگړې کول",
- "sf_createproperty_propname": "د ځانتيا نوم:",
- "sf_createproperty_proptype": "ډول:",
- "templates": "کينډۍ",
- "sf_templates_definescat": "د وېشنيزې څرگندونه: $1",
- "createtemplate": "يوه کينډۍ جوړول",
- "sf_createtemplate_namelabel": "د کينډۍ نوم:",
- "sf_createtemplate_aggregationlabel": "د لړليک لپاره سرليک:",
- "sf_createtemplate_standardformat": "لښتيال",
- "sf_createtemplate_sectionsformat": "برخې",
- "sf_createtemplate_deletefield": "ړنگول",
- "sf_createform_template": "کينډۍ:",
- "sf_createform_inputtypedefault": "(تلواليز)",
- "sf_createform_hidden": "پټ",
- "sf_createform_addtemplate": "کينډۍ ورگډول:",
- "sf_createform_atend": "په پای کې",
- "sf_createform_add": "ورگډول",
- "createcategory": "يوه وېشنيزه جوړول",
- "sf_createcategory_name": "د وېشنيزې نوم:",
- "sf_createclass_create": "جوړول",
- "formstart": "د فورمې سره يوځای يو مخ گډول",
- "sf_formstart_createoredit": "جوړول يا سمول",
- "sf_formedit_createtitle": "$1 جوړول: $2",
- "sf_formedit_createtitlenotarget": "جوړول $1",
- "sf_formedit_remove": "غورځول",
- "sf_formedit_addanother": "يو بل ورگډول",
- "sf_formedit_none": "هېڅ",
- "sf_bad_email_error": "بايد چې برېښليک پته يوه سمه بڼه ولري",
- "sf_bad_number_error": "بايد چې يوه سمه شمېره وي",
- "sf_bad_date_error": "بايد چې يوه سمه نېټه وي",
- "sf_deletionlog": "د ړنگولو يادښت",
- "sf_form_freetextlabel": "خپلواکه متن",
- "sf_category_desc": "همدا د $1 وېشنيزه ده.",
- "sf_blank_namespace": "آرنی"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pt-br.json b/SemanticForms/i18n/pt-br.json
deleted file mode 100644
index b9128a4f..00000000
--- a/SemanticForms/i18n/pt-br.json
+++ /dev/null
@@ -1,207 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Crazymadlover",
- "Eduardo.mps",
- "Enqd",
- "Jaideraf",
- "Leonardo Costa",
- "Luckas",
- "Luckas Blade",
- "Rafael Vargas",
- "Teles",
- "555"
- ]
- },
- "semanticforms-desc": "Formulários para adição e edição de dados semânticos",
- "specialpages-group-sf_group": "Formulários Semânticos",
- "createproperty": "Criar uma propriedade",
- "sf-createproperty-with-name": "Criar propriedade: $1",
- "sf_createproperty_linktoform": "Essa propriedade irá ligar às páginas que utilizam o formulário:",
- "sf_createproperty_allowedvalsinput": "Se pretende que esta propriedade apenas possa conter determinados valores, introduza a lista de valores permitidos, separados por vírgulas (se um valor contém uma vírgula, substitua-a por \"\\,\"):",
- "sf_createproperty_propname": "Nome da propriedade:",
- "sf_createproperty_proptype": "Tipo:",
- "templates": "Predefinições",
- "sf_templates_docu": "Existem as seguintes predefinições neste wiki.",
- "sf_templates_definescat": "define categoria: $1",
- "createtemplate": "Criar uma predefinição",
- "sf-createtemplate-with-name": "Criar predefinição: $1",
- "sf_createtemplate_namelabel": "Nome da predefinição:",
- "sf_createtemplate_multipleinstance": "Essa predefinição pode ser incluída várias vezes na página.",
- "sf_createtemplate_connectingproperty": "Nome da propriedade utilizada para conectar os campos dessa predefinição com o resto da página:",
- "sf_createtemplate_categorylabel": "Categoria definida pela predefinição (opcional):",
- "sf_createtemplate_templatefields": "Campos da predefinição",
- "sf_createtemplate_fieldsdesc": "Para ter os campos nessa predefinição não é necessário nomear os campos, simplesmente entre com o número de cada campo (por exemplo, 1, 2, 3, etc.) ao invés de um nome real.",
- "sf_createtemplate_fieldname": "Nome do campo:",
- "sf_createtemplate_displaylabel": "Nome a ser exibido:",
- "sf_createtemplate_semanticproperty": "Propriedade semântica:",
- "sf_createtemplate_fieldislist": "Esse campo pode conter uma lista de valores separados por vírgulas",
- "sf_createtemplate_aggregation": "Agregação",
- "sf_createtemplate_aggregationdesc": "Para listar, em qualquer página usando essa predefinição, todas as páginas que tem uma determinada propriedade apontando para aquela página, especifique a propriedade apropriada abaixo:",
- "sf_createtemplate_aggregationlabel": "Título para a lista:",
- "sf_createtemplate_outputformat": "Formato de saída:",
- "sf_createtemplate_standardformat": "Tabela",
- "sf_createtemplate_infoboxformat": "Infobox lateral",
- "sf_createtemplate_plainformat": "Textos simples",
- "sf_createtemplate_sectionsformat": "Seções",
- "sf_createtemplate_addfield": "Adicionar campo",
- "sf_createtemplate_deletefield": "Deletar",
- "forms": "Formulários",
- "sf_forms_docu": "Existem os seguintes formulários neste wiki.",
- "sf_forminputs_mandatory": "Um valor é obrigatório para este campo",
- "sf_forminputs_restricted": "Somente administradores podem editar esse campo",
- "sf_forminputs_class": "O atributo HTML \"class\" para esse campo",
- "sf_forminputs_default": "O valor padrão para esse campo",
- "sf_forminputs_preload": "Uma página wiki cujo conteúdo será o valor padrão para esse campo",
- "sf_forminputs_property": "Uma propriedade semântica correspondente a esse campo",
- "sf_forminputs_size": "O tamanho desse campo de texto, em caracteres",
- "sf_forminputs_maxlength": "O comprimento máximo permitido para o texto desse campo",
- "sf_forminputs_placeholder": "Texto de ajuda que aparece no campo até que o usuário clique nele",
- "sf_forminputs_uploadable": "Coloca um link \"{{int:upload}}\" ao lado desse campo",
- "sf_forminputs_defaultfilename": "O nome padrão do arquivo para os arquivos enviados",
- "sf_forminputs_rows": "O número de linhas desse campo",
- "sf_forminputs_cols": "O número de colunas desse campo",
- "sf_forminputs_autogrow": "Define que esse campo deve aumentar de tamanho se o texto exceder seu limite",
- "sf_forminputs_valuesfromproperty": "Uma propriedade cujos valores no wiki devem formar o conjunto de valores desse campo",
- "sf_forminputs_valuesfromcategory": "Uma categoria cujas páginas pertencentes devem formar o conjunto de valores desse campo",
- "sf_forminputs_valuesfromnamespace": "Um namespace cujas páginas pertencentes devem formar o conjunto de valores desse campo",
- "sf_forminputs_valuesfromconcept": "Uma página de \"conceito\" do Semantic MediaWiki cujas páginas pertencentes devem formar o conjunto de valores desse campo",
- "sf_forminputs_valuesfromurl": "Um URL que contém dados estruturados que devem formar o conjunto de valores desse campo",
- "sf_forminputs_values": "O conjunto de valores desse campo, separados por vírgulas",
- "sf_forminputs_list": "Marca que esse campo contém uma lista de valores",
- "sf_forminputs_delimiter": "O delimitador entre os valores do campo, se esse campo contém uma lista de valores",
- "sf_forminputs_remoteautocompletion": "Usar o autocompletar remoto",
- "sf_forminputs_existingvaluesonly": "Permitir somente valores já presentes na lista",
- "sf_forminputs_showonselect": "Elementos da página que só serão exibidos se certos valores forem selecionados (exemplo: \"valor1=>div1;valor2=>div2\")",
- "sf_forminputs_listboxsize": "A altura dessa caixa de listagem, em linhas",
- "sf_forminputs_includetimezone": "Incluir uma entrada para o fuso horário",
- "sf_forminputs_topcategory": "A categoria-mãe desse conjunto de categorias (obrigatório)",
- "sf_forminputs_hideroot": "Esconder a categoria-mãe",
- "sf_forminputs_depth": "O número de níveis de categorias a serem exibidas inicialmente",
- "sf_forminputs_height": "A altura desse campo, em pixels",
- "sf_forminputs_width": "A largura desse campo, em pixels",
- "createform": "Criar um formulário",
- "sf-createform-with-name": "Criar formulário: $1",
- "sf_createform_nameinput": "Nome do formulário",
- "sf_createform_nameinputdesc": "(normalmente é dado ao formulário o mesmo nome que a sua predefinição principal):",
- "sf_createform_template": "Predefinição:",
- "sf_createform_templatelabelinput": "Título da predefinição (opcional):",
- "sf_createform_allowmultiple": "Permitir múltiplas (ou zero) instâncias dessa predefinição na página criada",
- "sf_createform_field": "Campo:",
- "sf_createform_fieldprop": "Este campo define a propriedade $1, do tipo $2.",
- "sf_createform_fieldproplist": "Este campo define uma lista de elementos que tem a propriedade $1, do tipo $2.",
- "sf_createform_fieldpropunknowntype": "Este campo define a propriedade $1, de um tipo não especificado.",
- "sf_createform_inputtype": "Tipo de entrada:",
- "sf_createform_inputtypedefault": "(padrão)",
- "sf_createform_formlabel": "Título do formulário:",
- "sf_createform_hidden": "Escondido",
- "sf_createform_removetemplate": "Remover predefinição",
- "sf_createform_addtemplate": "Adicionar predefinição:",
- "sf_createform_atend": "No final",
- "sf_createform_add": "Adicionar",
- "sf_createform_choosefield": "Escolha um campo para adicionar",
- "sf_createform_pagesection": "Seção da página:",
- "sf_createform_addsection": "Adicionar seção",
- "sf_createform_removesection": "Remover seção",
- "sf_createform_before": "Predefinição anterior:",
- "sf_createform_addelements": "Adicionar elementos",
- "sf_createform_hiddensection": "Este campo está oculto no formulário",
- "sf_createform_sectionlevel": "Nível de seção:",
- "sf_createform_sectionname": "Nome da seção",
- "sf_createform_additembeforesave": "Você precisa adicionar pelo menos uma predefinição para este formulário antes de poder salvá-lo.",
- "sf_createform_otherparameters": "Outros parâmetros",
- "createcategory": "Criar uma categoria",
- "sf-createcategory-with-name": "Criar categoria: $1",
- "sf_createcategory_name": "Nome da categoria:",
- "sf_createcategory_defaultform": "Formulário padrão:",
- "sf_createcategory_makesubcategory": "Faz desta categoria uma subcategoria de outra (opcional):",
- "createclass": "Criar uma classe",
- "sf_createclass_docu": "Introduza todos os dados aqui para criar as propriedades, predefinições, formulários e categorias para uma única classe. Para mais opções, utilize as páginas $1.",
- "sf_createclass_allowedvalues": "Valores permitidos:",
- "sf_createclass_listofvalues": "Lista de valores?",
- "sf_createclass_nameinput": "Nome do formulário:",
- "sf_createclass_missingvalues": "Nem todos os campos obrigatórios foram preenchidos.",
- "sf_createclass_success": "As propriedades, as predefinições, os formulários e as categorias serão criados.",
- "sf_createclass_create": "Criar",
- "formstart": "Adicionar página",
- "sf_formstart_badform": "Erro: nenhum formulário foi encontrado na página \"$1\".",
- "sf_formstart_badtitle": "Erro: \"$1\" é um título inválido para uma página.",
- "sf_formstart_docu": "Entre com o nome da página a ser editada com o formulário '$1'.\nSe esta página já existir, você será direcionado para o formulário de edição da página.\nDo contrário, você será direcionado para a criação da página com o formulário.",
- "sf_formstart_noform_docu": "Entre com o nome da página e selecione o formulário com que a página será editada.\nSe esta página já existir, você será direcionado para a edição da página com o formulário.\nDo contrário, você será direcionado para adicionar a página com o formulário.",
- "sf_formstart_createoredit": "Criar ou editar",
- "formedit": "Editar com formulário",
- "sf_formedit_createtitle": "Criar $1: $2",
- "sf_formedit_createtitlenotarget": "Criar $1",
- "sf_formedit_badurl": "Esta é a página para edição com um formulário. É necessário especificar na URL tanto um nome de formulário quanto uma página alvo;\nisto é, o URL deve ficar parecido com 'Special:FormEdit?form=<form name>&target=<target page>' ou 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "Você também pode adicionar está página com um dos seguintes formulários:",
- "sf_formedit_altformsonly": "Por favor, selecione um dos seguintes formulários para adicionar esta página:",
- "sf_formcreate": "Criar com formulário",
- "sf_viewform": "Ver formulário",
- "sf_editsource": "Editar fonte",
- "sf_formedit_edittitle": "Editar $1: $2",
- "sf_formedit_morethanoneform": "'''Aviso''': mais de um formulário padrão está definido para esta página.",
- "sf_formedit_formwarning": "Aviso: esta página <a href=\"$1\">já existe</a>, mas não utiliza este formulário.",
- "sf_formedit_mismatchedbrackets": "Aviso: a página contém parêntesis, colchetes ou chaves sem fechamento, desse modo, a página não renderizará corretamente o formulário. Por favor, <a href=\"$1\">corrija o erro no texto fonte</a> antes de continuar.",
- "sf_formedit_remove": "Remover essa instância",
- "sf_formedit_addanotherabove": "Adicionar uma instância acima desta",
- "sf_formedit_addanother": "Adicionar outro",
- "sf_formedit_none": "Nenhum",
- "sf_formedit_emptytitle": "Erro: os dados inseridos resultam num título de página em branco.",
- "sf_formedit_hookerror": "Erro: uma extensão do MediaWiki impediu a modificação da página de destino.",
- "sf_formedit_saveandcontinueediting": "Salvar e continuar",
- "sf_formedit_saveandcontinue_summary": "Salvo utilizando o botão \"$1\" do formulário",
- "sf_formedit_tooltip_saveandcontinueediting": "Salvar os dados e continuar editando",
- "sf_autoedit_anoneditwarning": "Aviso: você não está autenticado. O seu endereço IP será gravado no histórico de edições da página.",
- "sf_autoedit_success": "A página [[$1]] foi modificada utilizando o formulário $2.",
- "sf_autoedit_fail": "A modificação de [[$1]] falhou.",
- "sf_autoedit_notargetspecified": "Nenhuma página de destino foi especificada.",
- "sf_autoedit_invalidtargetspecified": "A página de destino especificada '''$1''' é inválida.",
- "sf_autoedit_invalidform": "'''$1''' não é um formulário válido.",
- "sf_autoedit_redirectlimitexeeded": "O limite máximo de redirecionamento para o formulário $1 foi excedido.",
- "sf_autoedit_invalidredirecttarget": "$1 é um destino de redirecionamento inválido para formulário $2.",
- "sf_autoedit_invalidpreloadspecified": "A página especificada de preload $1 é inválida.",
- "sf_autoedit_redlinkexists": "$1 já existe.",
- "sf_autoedit_noformfound": "Nenhum formulário foi especificado.",
- "sf_autoedit_toomanyformsfound": "Há mais de um formulário disponível para essa página.",
- "sf_autoedit_readonly": "Atualmente a base de dados não está permitindo modificações. Motivo: $1",
- "sf_autoedit_nosemanticform": "Não foi possível obter o formulário $2 para a página $1. Para mais detalhes, consulte a página [[{{#special:FormEdit}}/$2/$1]].",
- "sf_autoedit_summary": "Editado automaticamente a partir da página $1.",
- "sf-autoedit-wait": "Aguarde...",
- "runquery": "Pesquisar",
- "sf_runquery_badurl": "Você deve especificar um nome de formulário na URL;\na URL deve se parecer com 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Pesquisar: $1",
- "sf_runquery_additionalquery": "Consulta adicional",
- "sf_formerrors_header": "Houve erros com suas entradas do formulário; veja abaixo.",
- "sf_too_few_instances_error": "É preciso haver pelo menos {{PLURAL:$1|uma instância|$1 instâncias}} desta predefinição.",
- "sf_too_many_instances_error": "Não pode haver mais de {{PLURAL:$1|uma instância|$1 instâncias}} desta predefinição.",
- "sf_blank_error": "não pode ficar em branco",
- "sf_bad_url_error": "precisa ter o formato correto da URL, começando com 'http'",
- "sf_bad_email_error": "precisa ter um formato válido de endereço de e-mail",
- "sf_bad_number_error": "precisa ser um número válido",
- "sf_bad_date_error": "precisa ser uma data válida",
- "uploadwindow": "Janela de upload",
- "sf_deletionlog": "Registro de eliminações",
- "sf-preview-header": "Previsão do formulário",
- "sf-preview-note": "Este será o aspecto do formulário quando ele estiver em uso:",
- "sf-pageschemas-pagenameformula": "Fórmula para a criação do nome da página:",
- "sf-pageschemas-createtitle": "Título do formulário para páginas novas:",
- "sf-pageschemas-edittitle": "Título do formulário para páginas existentes:",
- "sf-pageschemas-inputtype": "Tipo de entrada (deixe em branco para definir como padrão):",
- "sf-pageschemas-otherparams": "Preencha com nomes de parâmetros e seus valores como pares chave=valor, separados por vírgulas (se os valores contêm vírgulas, substitua-as por \"\\,\"). Por exemplo: $1",
- "sf_property_isproperty": "Esta é uma propriedade do tipo $1.",
- "sf_property_linkstoform": "Liga às páginas que utilizam o formulário $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|O valor permitido para essa propriedade é|Os valores permitidos para essa propriedade são}}:",
- "sf_template_docu": "Esta é a predefinição '$1'.\nEla deve ser chamada no seguinte formato:",
- "sf_template_docufooter": "Edite a página para ver o texto da predefinição.",
- "sf_form_docu": "Este é o formulário \"$1\".\nPara criar uma página com este formulário, insira o nome da página abaixo;\nse já existir uma página com o mesmo nome, você será encaminhado a edição dessa página com o formulário.",
- "sf_form_freetextlabel": "Texto livre",
- "sf_category_hasdefaultform": "Esta categoria utiliza o formulário $1.",
- "sf_category_desc": "Esta é a categoria $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Veja a aba \"{{int:edit}}\" para páginas editáveis pelo formulário",
- "right-editrestrictedfields": "Editar campos restritos de formulários",
- "right-createclass": "Criar novas classes semânticas",
- "action-createclass": "criar novas classes semânticas",
- "action-editrestrictedfields": "editar campos restritos dos formulários",
- "action-viewedittab": "veja a aba \"{{int:edit}}\" para páginas editáveis pelo formulário"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/pt.json b/SemanticForms/i18n/pt.json
deleted file mode 100644
index c1888542..00000000
--- a/SemanticForms/i18n/pt.json
+++ /dev/null
@@ -1,163 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Hamilton Abreu",
- "Lijealso",
- "Luckas",
- "Malafaya",
- "SandroHc",
- "Waldir",
- "555"
- ]
- },
- "semanticforms-desc": "Formulários para adicionar e editar dados semânticos",
- "specialpages-group-sf_group": "Formulários Semânticos",
- "createproperty": "Criar uma propriedade",
- "sf_createproperty_linktoform": "Esta propriedade irá ligar às páginas que usem o formulário:",
- "sf_createproperty_allowedvalsinput": "Se pretende que esta propriedade apenas possa conter determinados valores, introduza a lista de valores permitidos, separados por vírgulas (se um valor contém uma vírgula, substitua-a por \"\\,\"):",
- "sf_createproperty_propname": "Nome da propriedade:",
- "sf_createproperty_proptype": "Tipo:",
- "templates": "Predefinições",
- "sf_templates_docu": "As seguintes predefinições existem nesta wiki.",
- "sf_templates_definescat": "definir categoria: $1",
- "createtemplate": "Criar uma predefinição",
- "sf_createtemplate_namelabel": "Nome da predefinição:",
- "sf_createtemplate_categorylabel": "Categoria definida pela predefinição (opcional):",
- "sf_createtemplate_templatefields": "Campos da predefinição:",
- "sf_createtemplate_fieldsdesc": "Para fazer com que os campos deste modelo não requiram descrições, simplesmente introduza o índice de cada campo (p.ex. 1, 2, 3, etc.) como o nome do campo, em vez de um nome real.",
- "sf_createtemplate_fieldname": "Nome do campo:",
- "sf_createtemplate_displaylabel": "Mostrar etiqueta:",
- "sf_createtemplate_semanticproperty": "Propriedade semântica:",
- "sf_createtemplate_fieldislist": "Este campo permite uma lista de valores, separados por vírgulas",
- "sf_createtemplate_aggregation": "Agregação",
- "sf_createtemplate_aggregationdesc": "Para listar, em qualquer página usando esta predefinição, todos os artigos que têm uma certa propriedade a apontar para aquela página, especifique a propriedade adequada abaixo:",
- "sf_createtemplate_aggregationlabel": "Título para a lista:",
- "sf_createtemplate_outputformat": "Formato de saída:",
- "sf_createtemplate_standardformat": "Tabela",
- "sf_createtemplate_infoboxformat": "Caixa informativa lateral",
- "sf_createtemplate_addfield": "Adicionar campo",
- "sf_createtemplate_deletefield": "Apagar",
- "forms": "Formulários",
- "sf_forms_docu": "Os seguintes formulários existem na wiki.",
- "sf_forminputs_mandatory": "Obrigatório",
- "sf_forminputs_restricted": "Esta entrada só pode ser editada por administradores",
- "sf_forminputs_class": "O atributo HTML \"class\" para esta entrada",
- "sf_forminputs_default": "O valor por omissão desta entrada",
- "sf_forminputs_preload": "Uma página da wiki, cujo conteúdo será o valor por omissão desta entrada",
- "sf_forminputs_property": "Uma propriedade semântica, a que este campo corresponde",
- "sf_forminputs_size": "O tamanho deste campo de texto, em caracteres",
- "sf_forminputs_maxlength": "O comprimento máximo permitido para o texto deste campo",
- "sf_forminputs_uploadable": "Colocar um link \"Upload de ficheiro\" ao lado desta entrada",
- "sf_forminputs_defaultfilename": "O nome de ficheiro por omissão, dos ficheiros enviados",
- "sf_forminputs_rows": "O número de linhas desta entrada",
- "sf_forminputs_cols": "O número de colunas desta entrada",
- "sf_forminputs_autogrow": "Definir que esta entrada deve aumentar de tamanho se o texto exceder os seus limites",
- "sf_forminputs_valuesfromproperty": "Uma propriedade, cujos valores na wiki devem formar o conjunto de valores desta entrada",
- "sf_forminputs_valuesfromcategory": "Uma categoria, cujas páginas devem formar o conjunto de valores desta entrada",
- "sf_forminputs_valuesfromnamespace": "Um espaço nominal, cujas páginas devem formar o conjunto de valores desta entrada",
- "sf_forminputs_valuesfromconcept": "Uma página de \"conceito\" (\"concept\") do MediaWiki Semântico, cujas páginas devem formar o conjunto de valores desta entrada",
- "sf_forminputs_valuesfromurl": "Uma URL, que contém dados estruturados que devem formar o conjunto de valores desta entrada",
- "sf_forminputs_values": "O conjunto de valores desta entrada, separados por vírgulas",
- "sf_forminputs_list": "Marcar que esta entrada detém uma lista de valores",
- "sf_forminputs_delimiter": "O delimitador entre os valores do campo, se esta entrada contém uma lista de valores",
- "sf_forminputs_remoteautocompletion": "Usar o preenchimento automático remoto",
- "sf_forminputs_existingvaluesonly": "Só permitir valores que já existam na lista",
- "sf_forminputs_showonselect": "Elementos da página que só serão apresentados se certos valores forem selecionados (exemplo: \"valor1=>div1;valor2=>div2\")",
- "sf_forminputs_listboxsize": "A altura desta caixa de listagem, em linhas",
- "sf_forminputs_includetimezone": "Incluir uma entrada para o fuso horário",
- "sf_forminputs_topcategory": "A category-mãe deste conjunto de categorias (obrigatória)",
- "sf_forminputs_hideroot": "Esconder a categoria mãe",
- "sf_forminputs_height": "A altura desta entrada, em pixels",
- "sf_forminputs_width": "A largura desta entrada, em pixels",
- "createform": "Criar um formulário",
- "sf_createform_nameinput": "Nome do formulário",
- "sf_createform_nameinputdesc": "(normalmente dá-se ao formulário o mesmo nome da sua predefinição principal):",
- "sf_createform_template": "Predefinição:",
- "sf_createform_templatelabelinput": "Etiqueta da predefinição (opcional):",
- "sf_createform_allowmultiple": "Permitir várias instâncias (ou zero) desta predefinição na página criada",
- "sf_createform_field": "Campo:",
- "sf_createform_fieldprop": "Este campo define a propriedade $1, do tipo $2.",
- "sf_createform_fieldproplist": "Este campo define uma lista de elementos que têm a propriedade $1, do tipo $2.",
- "sf_createform_fieldpropunknowntype": "Este campo define uma propriedade $1, de tipo não especificado.",
- "sf_createform_inputtype": "Tipo de entrada:",
- "sf_createform_inputtypedefault": "(padrão)",
- "sf_createform_formlabel": "Etiqueta do formulário:",
- "sf_createform_hidden": "Oculto",
- "sf_createform_removetemplate": "Remover predefinição",
- "sf_createform_addtemplate": "Adicionar predefinição:",
- "sf_createform_atend": "Ao fim",
- "sf_createform_add": "Adicionar",
- "sf_createform_choosefield": "Escolha um campo a adicionar",
- "sf_createform_before": "Antes da predefinição:",
- "sf_createform_sectionname": "Nome da seção",
- "sf_createform_additembeforesave": "Tem de adicionar pelo menos uma predefinição a este formulário antes de o poder gravar.",
- "createcategory": "Criar uma categoria",
- "sf_createcategory_name": "Nome da categoria:",
- "sf_createcategory_defaultform": "Formulário padrão:",
- "sf_createcategory_makesubcategory": "Fazer desta categoria uma subcategoria de outra categoria (opcional):",
- "createclass": "Criar uma classe",
- "sf_createclass_docu": "Introduza todos os dados aqui para criar as propriedades, modelo, formulário e categoria para uma única classe. Para mais opções, utilize antes as páginas $1.",
- "sf_createclass_allowedvalues": "Valores permitidos:",
- "sf_createclass_listofvalues": "Lista de valores?",
- "sf_createclass_nameinput": "Nome do formulário:",
- "sf_createclass_missingvalues": "Os campos obrigatórios não foram todos preenchidos.",
- "sf_createclass_success": "Propriedades, modelo, formulário e categoria serão criados.",
- "sf_createclass_create": "Criar",
- "formstart": "Adicionar página com formulário",
- "sf_formstart_badform": "Erro: não foi encontrada nenhuma página de formulário em $1",
- "sf_formstart_badtitle": "Erro: \"$1\" é um título inválido para uma página.",
- "sf_formstart_docu": "Introduza o nome da página aqui, para ser editada com o formulário '$1'.\nSe a página já existir, será enviado para o formulário de edição dessa página.\nCaso contrário, será enviado para o formulário de adição da página.",
- "sf_formstart_noform_docu": "Introduza o nome da página aqui, e selecione um formulário a usar na sua edição.\nSe a página já existir, será enviado para o formulário de edição dessa página.\nCaso contrário, será enviado para o formulário de adição da página.",
- "sf_formstart_createoredit": "Criar ou editar",
- "formedit": "Editar com formulário",
- "sf_formedit_createtitle": "Criar $1: $2",
- "sf_formedit_createtitlenotarget": "Criar $1",
- "sf_formedit_badurl": "Esta é a página para editar com um formulário. Na URL deve especificar um nome de formulário e uma página alvo; deverá parecer-se com 'Special:FormEdit?form=<form name>&target=<target page>', ou 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "Pode, em alternativa, adicionar esta página com um dos seguintes formulários:",
- "sf_formedit_altformsonly": "Por favor, selecione um dos seguintes formulários para adicionar esta página:",
- "sf_formcreate": "Criar com formulário",
- "sf_viewform": "Ver formulário",
- "sf_editsource": "Editar a origem",
- "sf_formedit_edittitle": "Editar $1: $2",
- "sf_formedit_morethanoneform": "Atenção: Mais de um formulário padrão está definido para esta página.",
- "sf_formedit_formwarning": "Aviso: Esta página <a href=\"$1\">já existe</a>, mas não utiliza este formulário.",
- "sf_formedit_remove": "Remover",
- "sf_formedit_addanother": "Adicionar outro",
- "sf_formedit_none": "Nenhum",
- "sf_formedit_emptytitle": "Erro: Os dados inseridos resultam num título de página em branco.",
- "sf_formedit_hookerror": "Erro: Uma extensão do MediaWiki impediu a modificação da página de destino.",
- "sf_formedit_saveandcontinueediting": "Gravar e continuar",
- "sf_formedit_tooltip_saveandcontinueediting": "Gravar os dados e continuar a editar",
- "sf_autoedit_anoneditwarning": "Aviso: Não está autenticado. O seu endereço IP será gravado no histórico de edições da página.",
- "sf_autoedit_success": "A página [[$1]] foi modificada usando o formulário $2.",
- "sf_autoedit_notargetspecified": "Não foi especificada uma página de destino.",
- "sf_autoedit_noformfound": "Não foi especificado um formulário.",
- "sf_autoedit_toomanyformsfound": "Há mais do que um formulário disponível para a página.",
- "sf_autoedit_readonly": "Não são permitidas alterações da base de dados. Motivo: $1",
- "sf_autoedit_nosemanticform": "Não foi possível obter o formulário $2 para a página $1. Para mais detalhes, consulte [[{{#special:FormEdit}}/$2/$1]].",
- "sf-autoedit-wait": "Aguarde...",
- "runquery": "Executar consulta",
- "sf_runquery_badurl": "Tem de especificar um nome de formulário na URL;\na URL deve ser parecida com 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Executar consulta: $1",
- "sf_runquery_additionalquery": "Consulta adicional",
- "sf_formerrors_header": "Houve erros nas entradas do seu formulário; veja abaixo",
- "sf_blank_error": "não pode estar em branco",
- "sf_bad_url_error": "Tem de ter o formato de URL correto, começando com 'http'",
- "sf_bad_email_error": "deverá introduzir um endereço de correio electrónico com formato válido",
- "sf_bad_number_error": "deverá introduzir um número válido",
- "sf_bad_date_error": "deverá introduzir uma data válida",
- "uploadwindow": "Janela de carregamento",
- "sf_deletionlog": "Registo de eliminações",
- "sf_property_isproperty": "Esta é uma propriedade do tipo $1.",
- "sf_property_linkstoform": "Liga às páginas que usam o formulário $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|O valor permitido para esta propriedade é|Os valores permitidos para esta propriedade são}}:",
- "sf_template_docu": "Esta é a predefinição '$1'.\nEla deverá ser chamada no seguinte formato:",
- "sf_template_docufooter": "Edite a página para ver o texto da predefinição",
- "sf_form_docu": "Este é o formulário \"$1\".\nPara criar uma página com este formulário, introduza o nome da página abaixo;\nse já existir uma página com o mesmo nome, será reencaminhado para um formulário para editar essa página.",
- "sf_form_freetextlabel": "Texto livre",
- "sf_category_hasdefaultform": "Esta categoria usa o formulário $1.",
- "sf_category_desc": "Esta é a categoria $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Ver o separador \"{{int:edit}}\" para páginas editáveis por formulário",
- "right-editrestrictedfields": "Editar os campos restritos dos formulários"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/qqq.json b/SemanticForms/i18n/qqq.json
deleted file mode 100644
index 0e5268fc..00000000
--- a/SemanticForms/i18n/qqq.json
+++ /dev/null
@@ -1,148 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "EugeneZelenko",
- "Fryed-peach",
- "Jon Harald Søby",
- "Kghbln",
- "McDutchie",
- "Nemo bis",
- "Protnet",
- "Purodha",
- "Raymond",
- "Shirayuki",
- "Siebrand",
- "Umherirrender",
- "아라"
- ]
- },
- "semanticforms-desc": "{{desc|name=Semantic Forms|url=http://www.mediawiki.org/wiki/Extension:Semantic Forms}}",
- "specialpages-group-sf_group": "{{doc-special-group|that=are related to Semantic Forms|like=[[Special:CreateForm]], [[Special:CreateTemplate]], [[Special:CreateProperty]], [[Special:CreateCategory]], [[Special:CreateClass]], [[Special:FormStart]], [[Special:FormEdit]], [[Special:RunQuery]]}}",
- "createproperty": "{{doc-special|CreateProperty}}",
- "sf-createproperty-with-name": "Used as page title. Parameters:\n* $1 - property name",
- "sf_createproperty_linktoform": "Used on [[Special:CreateProperty]] as label for the input box where to enter the name of the default form.",
- "sf_createproperty_allowedvalsinput": "Used as label for the \"Values\" input box.",
- "sf_createproperty_propname": "Used as a table column header and as a label for the select box.\n{{Identical|Property name}}",
- "sf_createproperty_proptype": "Used as a table column header and as a label for the select box.\n{{Identical|Type}}",
- "sf_createproperty_editsummary": "Used for the edit summary when a new semantic property is created. Parameters:\n* $1 - type of the newly created semantic property",
- "templates": "{{doc-special|Templates}}\n{{Identical|Template}}",
- "sf_templates_docu": "Used as page header.",
- "sf_templates_definescat": "The message is shown on [[Special:Templates]], the list of templates in the wiki, after the name of each template, to describe it.\n\nParameters:\n* $1 - the name of the category that this template adds pages to",
- "createtemplate": "{{doc-special|CreateTemplate}}\n{{Identical|Create template}}",
- "sf-createtemplate-with-name": "Used as page title. Parameters:\n* $1 - template name\n{{Identical|Create template}}",
- "sf_createtemplate_namelabel": "Used as label for the \"Template name\" input box.\n{{Identical|Template name}}",
- "sf_createtemplate_multipleinstance": "Used as label for the checkbox.",
- "sf_createtemplate_connectingproperty": "Used as label for the input box.",
- "sf_createtemplate_categorylabel": "Used as label for the \"Category name\" input box.",
- "sf_createtemplate_templatefields": "Used as fieldset label.\n\nFollowed by the following description:\n* {{msg-mw|Sf createtemplate fieldsdesc}}",
- "sf_createtemplate_fieldsdesc": "Used as description in the form.\n\nPreceded by the fieldset label {{msg-mw|Sf createtemplate templatefields}}.",
- "sf_createtemplate_fieldname": "The name of the field used in the relevant template.\n{{Identical|Field name}}",
- "sf_createtemplate_displaylabel": "The term for the text that shows up next to a field when it is displayed",
- "sf_createtemplate_semanticproperty": "Used as label for the \"Property name\" select box.",
- "sf_createtemplate_fieldislist": "Used as label for the checkbox.",
- "sf_createtemplate_aggregation": "Used as fieldset label.\n\nFollowed by the following description:\n* {{msg-mw|Sf createtemplate aggregationdesc}}",
- "sf_createtemplate_aggregationdesc": "Used as description in the form.\n\nPreceded by the fieldset label {{msg-mw|Sf createtemplate aggregation}}.",
- "sf_createtemplate_standardformat": "{{Identical|Table}}",
- "sf_createtemplate_infoboxformat": "For RTL languages this should be translated as \"left-hand side\".",
- "sf_createtemplate_plainformat": "{{Identical|Plain text}}",
- "sf_createtemplate_sectionsformat": "{{Identical|Section}}",
- "sf_createtemplate_deletefield": "{{Identical|Delete}}",
- "forms": "{{doc-special|Forms}}",
- "sf_forminputs_mandatory": "See also:\n* {{msg-mw|Sf forminputs restricted}}\n* {{msg-mw|Sf createform hiddensection}}",
- "sf_forminputs_restricted": "See also:\n* {{msg-mw|Sf forminputs mandatory}}\n* {{msg-mw|Sf createform hiddensection}}",
- "sf_forminputs_uploadable": "This is a message describing a checkbox. The message included within this message is: {{msg-mw|upload}}",
- "sf_forminputs_listboxsize": "See [[wikipedia:list box|listbox]] for an listbox example",
- "sf_forminputs_structure": "This describes one parameter to the \"tree\" form input, that takes in wikitext and sets the structure. The wikitext that should be entered for this parameter should look something like:\n* A\n** B\n** C\n*** D\n* E",
- "sf_forminputs_checkboxes_select_all": "This is used for a field of checkboxes. It is a label for a link that triggers the selection of all checkboxes.",
- "sf_forminputs_checkboxes_select_none": "This is used for a field of checkboxes. It is a label for a link that triggers the deselection of all checkboxes.",
- "sf_forminputs_maxvalues": "This is a message about description for parameter - max values",
- "createform": "{{doc-special|CreateForm}}\nTitle below, create link. If you enter, include \".\".",
- "sf-createform-with-name": "Used as page title. Parameters:\n* $1 - form name",
- "sf_createform_template": "Followed by the template name and used as an option in the select box.\n\nSee also:\n* {{msg-mw|Sf createform pagesection}}\n{{Identical|Template}}",
- "sf_createform_allowmultiple": "This is the label for a checkbox on [[Special:CreateForm]]. If you tick it you will be able to use the template more than once within the form (one or more instances).",
- "sf_createform_field": "{{Identical|Field}}",
- "sf_createform_fieldprop": "Parameters:\n* $1 - property name (with link)\n* $2 - property type\n{{Related|Sf createform fieldprop}}",
- "sf_createform_fieldproplist": "Parameters:\n* $1 - property name (with link)\n* $2 - property type\n{{Related|Sf createform fieldprop}}",
- "sf_createform_fieldpropunknowntype": "Parameters:\n* $1 - property name (with link)\n{{Related|Sf createform fieldprop}}",
- "sf_createform_inputtypedefault": "{{Identical|Default}}",
- "sf_createform_hidden": "{{Identical|Hidden}}",
- "sf_createform_removetemplate": "{{Identical|Remove template}}",
- "sf_createform_addtemplate": "Used as label for the \"Template\" select box.\n\nPreceded by <code><nowiki><h2></nowiki></code> heading: {{msg-mw|Sf createform addelements}}.\n{{Identical|Add template}}",
- "sf_createform_add": "{{Identical|Add}}",
- "sf_createform_pagesection": "Followed by the template name and used as an option in the select box.\n\nSee also:\n* {{msg-mw|Sf createform template}}",
- "sf_createform_addsection": "Used as label.\n\nFollowed by \":\" and the input box which has the placeholder {{msg-mw|Sf createform sectionname}}.\n{{Identical|Add section}}",
- "sf_createform_removesection": "Used as label for the Submit button.\n{{Identical|Remove section}}",
- "sf_createform_before": "Used as label for the \"Template\" select box.\n{{Identical|Before}}",
- "sf_createform_addelements": "Used as <code><nowiki><h2></nowiki></code> heading.\n\nFollowed by the label {{msg-mw|Sf createform addtemplate}}.",
- "sf_createform_hiddensection": "See also:\n* {{msg-mw|Sf forminputs mandatory}}\n* {{msg-mw|Sf forminputs restricted}}",
- "sf_createform_sectionlevel": "{{Identical|Section level}}",
- "sf_createform_sectionname": "Used as placeholder for the \"Section name\" input box.\n\nThe input box is preceded by the label {{msg-mw|Sf createform addsection}} and \":\".\n{{Identical|Section name}}",
- "sf_createform_otherparameters": "{{Identical|Other parameter}}",
- "createcategory": "{{doc-special|CreateCategory}}",
- "sf-createcategory-with-name": "Used as page title. Parameters:\n* $1 - category name",
- "sf_createcategory_name": "{{Identical|Category name}}",
- "sf_createcategory_makesubcategory": "Label of an input field on [[Special:CreateCategory]]: it's associated to a dropdown where to choose an existing element.",
- "createclass": "{{doc-special|CreateClass}}",
- "sf_createclass_docu": "Used as intro text for the form. Parameters:\n* $1 - list of links, with the following link texts:\n** {{msg-mw|Createproperty}}\n** {{msg-mw|Createtemplate}}\n** {{msg-mw|Createform}}\n** {{msg-mw|Createcategory}}",
- "sf_createclass_create": "{{Identical|Create}}",
- "formstart": "{{doc-special|FormStart}}",
- "sf_formstart_badform": "Used as error message. Parameters:\n* $1 - form name (with link)",
- "sf_formstart_badtitle": "Used as error message. Parameters:\n* $1 - invalid page name which may contain forbidden characters",
- "sf_formstart_docu": "Used as description for the HTML form. Parameters:\n* $1 - semantic form name\nSee also:\n* {{msg-mw|Sf formstart noform docu}}",
- "sf_formstart_noform_docu": "Used as description for the HTML form.\n\nSee also:\n* {{msg-mw|Sf formstart docu}}",
- "formedit": "{{doc-special|FormEdit}}",
- "sf_formedit_createtitle": "Used as page title. Parameters:\n* $1 - the main part of the title of a semantic form\n* $2 - the prefixed title, with spaces for the target page\nSee also:\n* {{msg-mw|Sf formedit createtitlenotarget}}\n* {{msg-mw|Sf formedit edittitle}}\n{{Identical|Create}}",
- "sf_formedit_createtitlenotarget": "Used as page title. Parameters:\n* $1 - the main part of the title of a semantic form\nSee also:\n* {{msg-mw|Sf formedit edittitle}}\n* {{msg-mw|Sf formedit createtitle}}\n{{Identical|Create}}",
- "sf_editsource": "{{Identical|Edit source}}",
- "sf_formedit_edittitle": "Used as page title. Parameters:\n* $1 - the main part of the title of a semantic form\n* $2 - the prefixed title, with spaces for the target page\nSee also:\n* {{msg-mw|Sf formedit createtitlenotarget}}\n* {{msg-mw|Sf formedit createtitle}}",
- "sf_formedit_formwarning": "Used as warning. Parameters:\n* $1 - full URL of the page",
- "sf_formedit_mismatchedbrackets": "Used as warning. Parameters:\n* $1 - full URL of the page (with \"action=edit\")",
- "sf_formedit_remove": "The text for a button that removes one row/\"instance\" in a form",
- "sf_formedit_addanotherabove": "The text for a button in a form that adds a row/\"instance\" above the current one",
- "sf_formedit_none": "{{Identical|None}}",
- "sf_formedit_saveandcontinue_summary": "Summary logged in the page history for revisions that were created using the \"Save and continue\" button.\n\nParameters:\n* $1 - replaced with {{msg-mw|Sf formedit saveandcontinueediting}}",
- "sf_formedit_accesskey_saveandcontinueediting": "{{notranslate}}",
- "sf_autoedit_anoneditwarning": "This is a copy of the general MediaWiki \"anoneditwarning\" message, but without any markup.\n\nSee also:\n* {{msg-mw|Anoneditwarning}}\n* {{msg-mw|Wikibase-anonymouseditwarning-property}}\n* {{msg-mw|Wikibase-anonymouseditwarning-item}}",
- "sf_autoedit_success": "Message sent upon successful operation. Parameters:\n* $1 - target\n* $2 - form\nSee also:\n* {{msg-mw|Sf autoedit fail}}",
- "sf_autoedit_fail": "Message sent upon failed operation. Parameters:\n* $1 - target\nSee also:\n* {{msg-mw|Sf autoedit success}}",
- "sf_autoedit_notargetspecified": "An error message sent when no target page name was specified.",
- "sf_autoedit_invalidtargetspecified": "An error message sent when the specified target page name is invalid as a wiki page name.\n\nParameters:\n* $1 - target page title",
- "sf_autoedit_invalidform": "An error message sent when an invalid form was specified.\n\nParameters:\n* $1 - form name",
- "sf_autoedit_redirectlimitexeeded": "An error message sent when the redirect limit was exeeded for the form page.\n\nParameters:\n* $1 - form name",
- "sf_autoedit_invalidredirecttarget": "An error message sent when the form page redirects to an invalid target.\n\nParameters:\n* $1 - target page title\n* $2 - form name",
- "sf_autoedit_invalidpreloadspecified": "An error message sent when an invalid preload page was specified.\n\nParameters:\n* $1 - preload page title",
- "sf_autoedit_redlinkexists": "An error message sent when the page was started on a redlink but on submit already exists.\n\nParameters:\n* $1 - empty string",
- "sf_autoedit_noformfound": "An error message sent when no suitable form could be found to edit the given target page.",
- "sf_autoedit_toomanyformsfound": "An error message sent when too many forms were found for the given target page.",
- "sf_autoedit_readonly": "An error message sent when the wiki is in read-only mode.\n\nParameters:\n* $1 - reason for locking the database",
- "sf_autoedit_nosemanticform": "Unused at this time.\n\nAn error message sent when no suitable form could be found to edit the given target page.\n\nParameters:\n* $1 - page title\n* $2 - form name",
- "sf_autoedit_summary": "Summary logged in the page history for revisions that were created using the autoedit parser function.\n\nParameters:\n* $1 - page title, with link",
- "sf-autoedit-wait": "Message displayed while an automatic edit is being made.",
- "runquery": "{{doc-special|RunQuery}}",
- "sf_runquery_title": "Used as page title. Parameters:\n* $1 - form title",
- "sf_too_few_instances_error": "An error message when the user has not added enough instances of a template.\n\nParameters:\n* $1 - number of instances",
- "sf_too_many_instances_error": "An error message when the user has added too many instances of a template.\n\nParameters:\n* $1 - number of instances",
- "sf_blank_error": "{{Identical|Cannot be blank}}",
- "uploadwindow": "Special page name for [[Special:UploadWindow]].\n\n'''This is about a window for uploading files. The window is not the thing being uploaded.'''",
- "sf_deletionlog": "{{Identical|Deletion log}}",
- "sf-pageschemas-otherparams": "Used as label for \"Form inputs\" and \"Other parameters\" input boxes.\n\nParameters:\n* $1 - any one of the following (hard-coded):\n** \"size=20, mandatory\"\n** \"rows=10, mandatory\"",
- "sf_property_isproperty": "Parameters:\n* $1 - property type (with link)",
- "sf_property_linkstoform": "Parameters:\n* $1 - default form tag (with link)\nThis message follows {{msg-mw|Sf property isproperty}}.",
- "sf_property_allowedvals": "This message is followed by list of the allowed values. Parameters:\n* $1 - number of allowed values\nThis message follows any one of the following:\n* {{msg-mw|Sf property isproperty}}\n* {{msg-mw|Sf property isproperty}} {{msg-mw|Sf property linkstoform}}",
- "sf_template_docu": "This is an introductory message at the top of an autocreated template.\n\nThe section following it displays the structure/format of the template itself.\n\nParameters:\n* $1 - template name",
- "sf_form_docu": "Used as description of the form. Parameters:\n* $1 - form name\n* $2 - (Unused) form-start URL",
- "sf_form_freetextlabel": "{{Identical|Free text}}",
- "sf_category_hasdefaultform": "Used as text of the category page. Parameters:\n* $1 - form name (with link)\nIf the category doesn't have default form, the following message is used instead:\n* {{msg-mw|Sf category desc}}",
- "sf_category_desc": "Used as text of the category page. Parameters:\n* $1 - category name\nIf the category has default form, the following message is used instead:\n* {{msg-mw|Sf category hasdefaultform}}",
- "sf_blank_namespace": "{{Identical|Main}}",
- "right-viewedittab": "{{doc-right|viewedittab}}\nRefers to {{msg-mw|Edit}}.",
- "right-editrestrictedfields": "{{doc-right|editrestrictedfields}}",
- "right-createclass": "{{doc-right|createclass}}",
- "action-createclass": "{{doc-action|createclass}}",
- "action-editrestrictedfields": "{{doc-action|editrestrictedfields}}",
- "action-viewedittab": "{{doc-action|viewedittab}}\nRefers to {{msg-mw|Edit}}.",
- "sf-select2-no-matches": "A message that is displayed when nothing is matched in Select2 autocompletion.",
- "sf-select2-searching": "A message that is displayed while search is in progress in Select2 autocompletion.",
- "sf-select2-input-too-short": "A message that is displayed when search string for Select2 autocompletion is smaller than the defined value.",
- "sf-select2-selection-too-big": "A message that is displayed when the number of selections for a multi-valued input is more than a certain number."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/rif.json b/SemanticForms/i18n/rif.json
deleted file mode 100644
index 25eb4b42..00000000
--- a/SemanticForms/i18n/rif.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jose77"
- ]
- },
- "sf_createtemplate_deletefield": "Sfaḍ"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ro.json b/SemanticForms/i18n/ro.json
deleted file mode 100644
index 72e2d2e1..00000000
--- a/SemanticForms/i18n/ro.json
+++ /dev/null
@@ -1,95 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Firilacroco",
- "KlaudiuMihaila",
- "Mihai",
- "Minisarm",
- "Stelistcristi"
- ]
- },
- "semanticforms-desc": "Formulare pentru adăugarea sau modificarea datelor semantice",
- "specialpages-group-sf_group": "Formulare semantice",
- "createproperty": "Creează o proprietate",
- "sf-createproperty-with-name": "Creează proprietatea: $1",
- "sf_createproperty_propname": "Numele proprietății:",
- "sf_createproperty_proptype": "Tip:",
- "templates": "Formate",
- "sf_templates_docu": "Următoarele formate există în wiki.",
- "sf_templates_definescat": "definește o categorie: $1",
- "createtemplate": "Creare format",
- "sf-createtemplate-with-name": "Creează formatul: $1",
- "sf_createtemplate_namelabel": "Numele formatului:",
- "sf_createtemplate_multipleinstance": "Acest format poate fi inclus de mai multe ori pe pagină.",
- "sf_createtemplate_categorylabel": "Categorie definită de către format (opțional):",
- "sf_createtemplate_templatefields": "Câmpurile formatului",
- "sf_createtemplate_fieldname": "Numele câmpului:",
- "sf_createtemplate_displaylabel": "Etichetă de afișat:",
- "sf_createtemplate_semanticproperty": "Proprietate semantică:",
- "sf_createtemplate_fieldislist": "Acest câmp poate conține o listă de valori, separate prin virgulă",
- "sf_createtemplate_aggregation": "Agregare",
- "sf_createtemplate_aggregationlabel": "Titlu pentru listă:",
- "sf_createtemplate_outputformat": "Format ieșire:",
- "sf_createtemplate_standardformat": "Tabel",
- "sf_createtemplate_infoboxformat": "Infobox lateral",
- "sf_createtemplate_plainformat": "Text simplu",
- "sf_createtemplate_sectionsformat": "Secțiuni",
- "sf_createtemplate_addfield": "Adaugă un câmp",
- "sf_createtemplate_deletefield": "Șterge",
- "forms": "Formular",
- "sf_forminputs_mandatory": "Obligatoriu",
- "sf_forminputs_restricted": "Doar administratorii pot modifica această intrare",
- "createform": "Creare formular",
- "sf_createform_nameinput": "Numele formularului",
- "sf_createform_template": "Format:",
- "sf_createform_field": "Câmp:",
- "sf_createform_fieldprop": "Acest câmp definește proprietatea $1, de tipul $2.",
- "sf_createform_inputtype": "Tip intrare:",
- "sf_createform_inputtypedefault": "(implicit)",
- "sf_createform_formlabel": "Eticheta formularului",
- "sf_createform_hidden": "Ascunse",
- "sf_createform_removetemplate": "Ştergeți formatul",
- "sf_createform_addtemplate": "Introduceți format:",
- "sf_createform_atend": "La sfârșit",
- "sf_createform_add": "Adaugă",
- "sf_createform_choosefield": "Alegeți un câmp de introdus",
- "sf_createform_before": "Înainte de format:",
- "createcategory": "Creează o categorie",
- "sf_createcategory_name": "Numele categoriei:",
- "sf_createcategory_defaultform": "Formular inițial:",
- "createclass": "Creează o clasă",
- "sf_createclass_allowedvalues": "Valori permise:",
- "sf_createclass_listofvalues": "Listă de valori?",
- "sf_createclass_nameinput": "Numele formularului:",
- "sf_createclass_missingvalues": "Nu toate câmpurile necesare au fost completate.",
- "sf_createclass_create": "Creare",
- "formstart": "Adaugă o pagină cu un formular",
- "sf_formstart_badform": "Eroare: niciun formular nu a fost găsit pe pagina „$1”.",
- "sf_formstart_createoredit": "Creați sau modificați",
- "formedit": "Modificare cu formular",
- "sf_formedit_createtitle": "Creare $1: $2",
- "sf_formcreate": "Creare cu formular",
- "sf_viewform": "Vedeți formular",
- "sf_editsource": "Modificare sursă",
- "sf_formedit_edittitle": "Modificare $1: $2",
- "sf_formedit_remove": "Elimină această instanță",
- "sf_formedit_addanother": "Adăugați altul",
- "sf_formedit_none": "Nimic",
- "sf_formedit_saveandcontinueediting": "Salvează și continuă",
- "sf-autoedit-wait": "Așteptați...",
- "runquery": "Executare interogare",
- "sf_blank_error": "nu poate fi gol",
- "sf_bad_number_error": "trebuie să fie un număr corect",
- "sf_bad_date_error": "trebuie să fie o dată corectă",
- "uploadwindow": "Fereastra de încărcare",
- "sf_deletionlog": "Jurnalul ștergerilor",
- "sf_property_isproperty": "Aceasta este o proprietate de tipul $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Valoarea admisă pentru această proprietate este|Valorile admise pentru această proprietate sunt}}:",
- "sf_form_freetextlabel": "Text liber",
- "sf_category_desc": "Aceasta este categoria $1.",
- "sf_blank_namespace": "Principal",
- "right-viewedittab": "Vizualizează fila „{{int:edit}}” pentru paginile ce pot fi modificate printr-un formular",
- "right-editrestrictedfields": "Modifică câmpuri restricționate ale formularelor",
- "action-editrestrictedfields": "modificați câmpuri restricționate ale formuarelor",
- "action-viewedittab": "vizualizați fila „{{int:edit}}” pentru paginile ce pot fi modificate printr-un formular"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/roa-tara.json b/SemanticForms/i18n/roa-tara.json
deleted file mode 100644
index 31fc7f11..00000000
--- a/SemanticForms/i18n/roa-tara.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Joetaras"
- ]
- },
- "sf_createproperty_proptype": "Tipe:",
- "sf_createtemplate_connectingproperty": "Nome d'a probbietà pe collegarse a le cambe de stu template a 'u reste d'a pàgene:",
- "sf_createtemplate_fieldname": "Nome d'u cambe:",
- "sf_createtemplate_displaylabel": "Etichette de visualizzazzione:",
- "sf_createtemplate_semanticproperty": "Probbietà semandeche:",
- "sf_createtemplate_aggregation": "Aggregazione:",
- "sf_createtemplate_aggregationlabel": "Titole pe l'elenghe:",
- "sf_createtemplate_standardformat": "Tabbelle",
- "sf_createtemplate_plainformat": "Teste semblice",
- "sf_createtemplate_addfield": "Aggiunge 'u cambe",
- "sf_createtemplate_deletefield": "Scangìlle",
- "forms": "Module",
- "createform": "Ccreje 'nu module",
- "sf-createform-with-name": "Ccreje 'u module: $1",
- "sf_createform_nameinput": "Nome d'u module",
- "sf_createform_template": "Template:",
- "sf_createform_field": "Cambe:",
- "sf_createform_inputtype": "Tipe de input:",
- "sf_createform_inputtypedefault": "(de base)",
- "sf_createform_hidden": "Scunnute",
- "sf_createform_removetemplate": "Live 'u template",
- "sf_createform_addtemplate": "Aggiunge 'u template:",
- "sf_createform_atend": "A fine",
- "sf_createform_add": "Aggiunge",
- "sf_createform_choosefield": "Scacchie 'nu cambe da aggiungere",
- "sf_createform_before": "Apprime d'u template:",
- "createcategory": "Ccreje 'na categorije",
- "sf-createcategory-with-name": "Ccreje 'a categorije: $1",
- "sf_createcategory_name": "Nome d'a categorije:",
- "sf_createclass_listofvalues": "Elenghe de valore?",
- "sf_createclass_nameinput": "Nome d'u module:",
- "sf_createclass_create": "Ccreje",
- "formstart": "Inizie d'u module",
- "sf_formstart_createoredit": "Ccreje o cange",
- "formedit": "Cange cu 'u module",
- "sf_formedit_createtitle": "Ccreje $1: $2",
- "sf_formedit_createtitlenotarget": "Ccreje $1",
- "sf_formcreate": "Ccreje cu 'u module",
- "sf_viewform": "Vide 'u module",
- "sf_editsource": "Cange 'a sorgende",
- "sf_formedit_edittitle": "Cange $1: $2",
- "sf_formedit_remove": "Live ste istanze",
- "sf_formedit_addanother": "Aggiunge 'n'otre",
- "sf_formedit_none": "Ninde",
- "sf_formedit_saveandcontinueediting": "Reggìstre e condinue",
- "sf-autoedit-wait": "Aspitte...",
- "sf_blank_namespace": "Prengepàle"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ru.json b/SemanticForms/i18n/ru.json
deleted file mode 100644
index 1a8f5e12..00000000
--- a/SemanticForms/i18n/ru.json
+++ /dev/null
@@ -1,207 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ferrer",
- "Haffman",
- "Innv",
- "Kaganer",
- "Lockal",
- "Okras",
- "Pastakhov",
- "QuestPC",
- "Vlsergey",
- "Александр Сигачёв"
- ]
- },
- "semanticforms-desc": "Формы для добавления и правки семантических данных",
- "specialpages-group-sf_group": "Semantic Forms",
- "createproperty": "Создать свойство",
- "sf-createproperty-with-name": "Создать свойство: $1",
- "sf_createproperty_linktoform": "Это свойство содержит ссылку на страницы, которые используют форму:",
- "sf_createproperty_allowedvalsinput": "Если вы хотите, чтобы данное свойство могло содержать только определённые значения, введите через запятую список допустимых значений (если значение содержит запятую, то замените её на «\\,»):",
- "sf_createproperty_propname": "Имя свойства:",
- "sf_createproperty_proptype": "Тип:",
- "templates": "Шаблоны",
- "sf_templates_docu": "Следующие шаблоны существуют в вики.",
- "sf_templates_definescat": "определяет категорию: $1",
- "createtemplate": "Создать шаблон",
- "sf-createtemplate-with-name": "Создать шаблон: $1",
- "sf_createtemplate_namelabel": "Имя шаблона:",
- "sf_createtemplate_multipleinstance": "Этот шаблон может быть включен несколько раз на странице.",
- "sf_createtemplate_connectingproperty": "Имя свойства для подключения полей этого шаблона к остальной части страницы:",
- "sf_createtemplate_categorylabel": "Категория, определяемая шаблоном (необязательно):",
- "sf_createtemplate_templatefields": "Поля шаблона",
- "sf_createtemplate_fieldsdesc": "Для указания полей шаблона не требуется указывать их имена, просто введите индекс каждого поля (например, 1, 2, 3 и т. д.) вместо фактического имени.",
- "sf_createtemplate_fieldname": "Имя поля:",
- "sf_createtemplate_displaylabel": "Отображаемая надпись:",
- "sf_createtemplate_semanticproperty": "Семантическое свойство:",
- "sf_createtemplate_fieldislist": "Это поле может содержать список разделённых запятыми значений",
- "sf_createtemplate_aggregation": "Соединение",
- "sf_createtemplate_aggregationdesc": "Чтобы вывести на любую страницу, использующую этот шаблон, все страницы, у которых заданное свойство указывает на эту страницу, укажите соответствующее свойство ниже:",
- "sf_createtemplate_aggregationlabel": "Заголовок списка:",
- "sf_createtemplate_outputformat": "Формат вывода:",
- "sf_createtemplate_standardformat": "Таблица",
- "sf_createtemplate_infoboxformat": "Сторона информационной панели",
- "sf_createtemplate_plainformat": "Обычный текст",
- "sf_createtemplate_sectionsformat": "Разделы",
- "sf_createtemplate_addfield": "Добавить поле",
- "sf_createtemplate_deletefield": "Удалить",
- "forms": "Формы",
- "sf_forms_docu": "В вики существуют следующие формы.",
- "sf_forminputs_mandatory": "Обязательное",
- "sf_forminputs_restricted": "Только администраторы могут изменять это поле",
- "sf_forminputs_class": "HTML-атрибут \"class\" для данного поля",
- "sf_forminputs_default": "Значение по умолчанию для этого поля",
- "sf_forminputs_preload": "Вики-страница, содержимое которой будет использовано как значение по умолчанию для этого поля",
- "sf_forminputs_property": "Семантическое свойство, которое соответствует этому полю",
- "sf_forminputs_size": "Размер этого текстового поля в символах",
- "sf_forminputs_maxlength": "Максимально допустимая длина текста в этом поле",
- "sf_forminputs_placeholder": "Справочный текст, который появляется в поле ввода до тех пор, пока пользователь не перейдет на него",
- "sf_forminputs_uploadable": "Добавить ссылку «{{int:upload}}» рядом с этим полем",
- "sf_forminputs_defaultfilename": "Имя файла по умолчанию для загруженных файлов",
- "sf_forminputs_rows": "Размер поля в строках",
- "sf_forminputs_cols": "Размер поля в столбцах",
- "sf_forminputs_autogrow": "Позволяет полю увеличивать свой размер в соответствии с количеством текста",
- "sf_forminputs_valuesfromproperty": "Свойство, набор значений которого используется для подстановки в это поле ввода",
- "sf_forminputs_valuesfromcategory": "Категория, названия страниц которой используются для подстановки в это поле ввода",
- "sf_forminputs_valuesfromnamespace": "Пространство имен, названия страниц которой используются для подстановки в это поле ввода",
- "sf_forminputs_valuesfromconcept": "Страница Semantic MediaWiki \"concept\", набор значений которой используется для подстановки в это поле ввода",
- "sf_forminputs_valuesfromurl": "URL-адрес хранилища структурированных данных, которые используются для подстановки в это поле ввода",
- "sf_forminputs_values": "Набор значений для подстановки в это поле ввода, разделенных запятыми",
- "sf_forminputs_list": "Отметить это поле ввода, как содержащее список значений",
- "sf_forminputs_delimiter": "Разделитель между значениями, если это поле ввода содержит список значений",
- "sf_forminputs_remoteautocompletion": "Использовать внешние данные для автозаполнения",
- "sf_forminputs_existingvaluesonly": "Разрешить только значения из списка",
- "sf_forminputs_showonselect": "Элементы страницы которые отображаются только в том случае, если выбраны определенные значения (пример: \"value1=>div1;value2=>div2)",
- "sf_forminputs_listboxsize": "Высота этого listbox, в строках",
- "sf_forminputs_includetimezone": "Отображать поле для ввода часового пояса",
- "sf_forminputs_topcategory": "Родительская категория этого набора категорий (обязательно)",
- "sf_forminputs_hideroot": "Скрыть родительскую категорию",
- "sf_forminputs_depth": "Количество уровней категорий для первоначального показа",
- "sf_forminputs_height": "Высота этого поля, в пикселях",
- "sf_forminputs_width": "Ширина этого поля, в пикселях",
- "createform": "Создать форму",
- "sf-createform-with-name": "Создать форму: $1",
- "sf_createform_nameinput": "Название формы",
- "sf_createform_nameinputdesc": "(форме, как правило, присваивается такое же имя, как и у основного шаблона):",
- "sf_createform_template": "Шаблон:",
- "sf_createform_templatelabelinput": "Заголовок шаблона (необязательно):",
- "sf_createform_allowmultiple": "Разрешить несколько (или ноль) экземпляров этого шаблона на создаваемой странице",
- "sf_createform_field": "Поле:",
- "sf_createform_fieldprop": "Это поле определяет свойство $1, которое имеет тип $2.",
- "sf_createform_fieldproplist": "Это поле определяет список элементов, имеющих свойство $1 типа $2.",
- "sf_createform_fieldpropunknowntype": "Это поле определяет свойство $1 неуказанного типа.",
- "sf_createform_inputtype": "Тип поля:",
- "sf_createform_inputtypedefault": "(по умолчанию)",
- "sf_createform_formlabel": "Метка поля:",
- "sf_createform_hidden": "скрытая",
- "sf_createform_removetemplate": "Удалить шаблон",
- "sf_createform_addtemplate": "Добавить шаблон:",
- "sf_createform_atend": "В конце",
- "sf_createform_add": "Добавить",
- "sf_createform_choosefield": "Выберите поле для добавления",
- "sf_createform_pagesection": "Раздел страницы:",
- "sf_createform_addsection": "Добавить раздел",
- "sf_createform_removesection": "Удалить раздел",
- "sf_createform_before": "Перед шаблоном:",
- "sf_createform_addelements": "Добавить элементы",
- "sf_createform_hiddensection": "Это поле ввода скрыто в форме",
- "sf_createform_sectionlevel": "Уровень раздела:",
- "sf_createform_sectionname": "Название раздела",
- "sf_createform_additembeforesave": "Вы должны добавить на эту форму хотя бы один шаблон, чтобы её можно было сохранить.",
- "sf_createform_otherparameters": "Другие параметры",
- "createcategory": "Создать категорию",
- "sf-createcategory-with-name": "Создать категорию: $1",
- "sf_createcategory_name": "Название категории:",
- "sf_createcategory_defaultform": "Форма по умолчанию:",
- "sf_createcategory_makesubcategory": "Сделать это подкатегорией другой категории (необязательно):",
- "createclass": "Создать класс",
- "sf_createclass_docu": "Введите здесь все данные для создание свойств, шаблона, формы и категории для одного класса. Для более подробных настроек, используйте страницу $1.",
- "sf_createclass_allowedvalues": "Допустимые значения:",
- "sf_createclass_listofvalues": "Список значений?",
- "sf_createclass_nameinput": "Название формы:",
- "sf_createclass_missingvalues": "Не все требуемые поля были заполнены.",
- "sf_createclass_success": "Будут созданы настройки, шаблоны, формы и категории.",
- "sf_createclass_create": "Создать",
- "formstart": "Добавить страницу с формой",
- "sf_formstart_badform": "Ошибка. Форма не найдена на $1",
- "sf_formstart_badtitle": "Ошибка. «$1» — недопустимое название страницы.",
- "sf_formstart_docu": "Введите здесь название страницы, которую нужно править с помощью формы «$1». Если страница уже существует, вы будите направлены на форму редактирования страницы, иначе вы будите направлены на форму добавления страницы.",
- "sf_formstart_noform_docu": "Введите здесь название страницы и выберите форму, с помощью которой ей следует редактировать. Если эта страница уже существует, вы будите направлены на форму редактирования страницы, иначе вы будите направлены на форму добавления страницы.",
- "sf_formstart_createoredit": "Создать или править",
- "formedit": "Редактировать с помощью формы",
- "sf_formedit_createtitle": "Создание $1: $2",
- "sf_formedit_createtitlenotarget": "Создать $1",
- "sf_formedit_badurl": "Это страница редактирования с помощью формы. Необходимо указать как имя формы, так и целевую страницу в URL;\nэто должно выглядеть как \"Special:FormEdit?form=<form name>&target=<target page>\", или \"Special:FormEdit/<form name>/<target page>\".",
- "sf_formedit_altforms": "Вы можете вместо этого добавить эту страницу с помощью одной из следующих форм:",
- "sf_formedit_altformsonly": "Пожалуйста, выберите одну из следующих форм для добавления этой страницы:",
- "sf_formcreate": "Создать с формой",
- "sf_viewform": "Смотреть форму",
- "sf_editsource": "Править исходники",
- "sf_formedit_edittitle": "Редактирование $1: $2",
- "sf_formedit_morethanoneform": "Внимание. Для этой страницы была определена больше чем одна форма по умолчанию.",
- "sf_formedit_formwarning": "Предупреждение. Эта страница <a href=\"$1\">уже существует</a>, но не использует эту форму.",
- "sf_formedit_mismatchedbrackets": "Предупреждение: Эта страница содержит фигурные или квадратные скобки, которые не закрыты, поэтому страница не будет правильно обрабатываться в форме. Пожалуйста, <a href=\"$1\">исправьте ошибку в исходном тексте</a>, прежде чем продолжить.",
- "sf_formedit_remove": "Удалить",
- "sf_formedit_addanotherabove": "Добавить ещё один экземпляр к этому одному",
- "sf_formedit_addanother": "Добавить ещё",
- "sf_formedit_none": "Ничего",
- "sf_formedit_emptytitle": "Ошибка: Вставляемые данные приводят к появлению пустого заголовка страницы.",
- "sf_formedit_hookerror": "Ошибка: Расширение MediaWiki помешало изменить целевую страницу.",
- "sf_formedit_saveandcontinueediting": "Сохранить и продолжить",
- "sf_formedit_saveandcontinue_summary": "Сохранено через форму кнопкой «$1»",
- "sf_formedit_tooltip_saveandcontinueediting": "Сохранить и продолжить редактирование",
- "sf_autoedit_anoneditwarning": "'''Внимание!''' Вы не авторизовались на сайте. В истории изменений этой страницы будет записан ваш IP-адрес.",
- "sf_autoedit_success": "Успешно изменено [[$1]] с помощью формы $2 .",
- "sf_autoedit_fail": "Изменение [[$1]] не удалось.",
- "sf_autoedit_notargetspecified": "Целевая страница не указана.",
- "sf_autoedit_invalidtargetspecified": "Указанная целевая страница '''$1''' недействительна.",
- "sf_autoedit_invalidform": "'''$1''' не является допустимой формой.",
- "sf_autoedit_redirectlimitexeeded": "Превышен максимальный предел перенаправлений для формы $1.",
- "sf_autoedit_invalidredirecttarget": "$1 является недопустимой целью перенаправления для формы $2.",
- "sf_autoedit_invalidpreloadspecified": "Указанная страница предпросмотра $1 является недопустимой.",
- "sf_autoedit_redlinkexists": "$1 уже существует.",
- "sf_autoedit_noformfound": "Форма не определена.",
- "sf_autoedit_toomanyformsfound": "Для страницы определено несколько форм.",
- "sf_autoedit_readonly": "В настоящее время база данных заблокирована для изменений. Причина:$1",
- "sf_autoedit_nosemanticform": "Не удалось получить форму $2 для страницы $1. Смотрите подробности на [[{{#special:FormEdit}}/$2/$1]].",
- "sf_autoedit_summary": "Автоматически отредактировано со страницы $1.",
- "sf-autoedit-wait": "Подождите...",
- "runquery": "Запустить запрос",
- "sf_runquery_badurl": "Вы должны определить имя формы в URL;\nURL должен выглядеть так: «Special:RunQuery/<form name>».",
- "sf_runquery_title": "Запустить запрос: $1",
- "sf_runquery_additionalquery": "Дополнительные запросы",
- "sf_formerrors_header": "Были обнаружены ошибки в вашей форме ввода, см. ниже",
- "sf_too_few_instances_error": "Должно быть по крайней мере $1 экземпляра этого шаблона.",
- "sf_too_many_instances_error": "Должно быть не более $1 экземпляров этого шаблона.",
- "sf_blank_error": "не может быть пустым",
- "sf_bad_url_error": "должно иметь правильный URL-формат, начинаться с «http»",
- "sf_bad_email_error": "должно содержать адрес почты соответствующего формата",
- "sf_bad_number_error": "должно быть числом",
- "sf_bad_date_error": "должно быть датой",
- "uploadwindow": "Окно загрузки",
- "sf_deletionlog": "Журнал удалений",
- "sf-preview-header": "Предварительный просмотр формы",
- "sf-preview-note": "Так форма будет выглядеть во время использованияː",
- "sf-pageschemas-pagenameformula": "Формула названия страницы:",
- "sf-pageschemas-createtitle": "Название формы для новых страниц:",
- "sf-pageschemas-edittitle": "Название формы для уже существующих страниц:",
- "sf-pageschemas-inputtype": "Тип входных данных (оставьте пустым, чтобы использовать значение по умолчанию):",
- "sf-pageschemas-otherparams": "Введите имена параметров и их значения парами ключ=значение, разделив пары запятыми (если значение содержит запятую, замените её на «\\,»). Например: $1",
- "sf_property_isproperty": "Это свойство типа $1.",
- "sf_property_linkstoform": "Ссылки на страницы, использующие форму $1.",
- "sf_property_allowedvals": "Для данного свойства {{PLURAL:$1|допускается следующее значение|допускаются следующие значения}}:",
- "sf_template_docu": "Это шаблон «$1». Он должен вызываться следующим образом:",
- "sf_template_docufooter": "Начните редактировать эту страницу, чтобы увидеть текст шаблона.",
- "sf_form_docu": "Это форма «$1».\nЧтобы создать страницу с помощью этой формы, введите ниже название страницы;\nесли страница с таким именем уже существует, вы будете направлены на форму редактирования этой страницы.",
- "sf_form_freetextlabel": "Текст",
- "sf_category_hasdefaultform": "Эта категория использует форму $1.",
- "sf_category_desc": "Это категория $1.",
- "sf_blank_namespace": "Основное",
- "right-viewedittab": "доступ к вкладке «{{int:edit}}» для страниц, редактируемых при помощи формы",
- "right-editrestrictedfields": "правка защищённых полей формы",
- "right-createclass": "создание новых семантических классов",
- "action-createclass": "создать новый семантический класс",
- "action-editrestrictedfields": "правка защищённых полей формы",
- "action-viewedittab": "доступ к вкладке «{{int:edit}}» для страниц, редактируемых при помощи формы"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/rue.json b/SemanticForms/i18n/rue.json
deleted file mode 100644
index c5f6b1ff..00000000
--- a/SemanticForms/i18n/rue.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Gazeb"
- ]
- },
- "sf_createproperty_proptype": "Тіп:",
- "templates": "Шаблоны",
- "sf_createtemplate_deletefield": "Вымазати",
- "sf_createform_add": "Придати",
- "createcategory": "Створити катеґорію",
- "sf_createcategory_name": "Мено катеґорії:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sa.json b/SemanticForms/i18n/sa.json
deleted file mode 100644
index 012a99ad..00000000
--- a/SemanticForms/i18n/sa.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Hemant wikikosh1",
- "Mahitgar"
- ]
- },
- "sf_blank_namespace": "प्रमुखम्"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/si.json b/SemanticForms/i18n/si.json
deleted file mode 100644
index 4dc48e54..00000000
--- a/SemanticForms/i18n/si.json
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Singhalawap",
- "පසිඳු කාවින්ද"
- ]
- },
- "specialpages-group-sf_group": "අර්ථ විචාර ආකෘතිපත්‍ර",
- "createproperty": "අයිතියක් තනන්න",
- "sf-createproperty-with-name": "අයිතිය තනන්න: $1",
- "sf_createproperty_propname": "ගුණ නාමය:",
- "sf_createproperty_proptype": "වර්ගය:",
- "templates": "සැකිලි",
- "sf_templates_docu": "පහත සැකිලි විකියේ පවතී.",
- "sf_templates_definescat": "ප්‍රවර්ගය අර්ථ දැක්වේ: $1",
- "createtemplate": "සැකිල්ලක් තනන්න",
- "sf-createtemplate-with-name": "සැකිල්ල තනන්න: $1",
- "sf_createtemplate_namelabel": "සැකිලි නාමය:",
- "sf_createtemplate_categorylabel": "සැකිල්ල විසින් නිර්වචනය කරන ප්‍රවර්ගය (අමතර):",
- "sf_createtemplate_templatefields": "සැකිලි ක්ෂේත්‍ර",
- "sf_createtemplate_fieldname": "ක්ෂේත්‍ර නාමය:",
- "sf_createtemplate_displaylabel": "ලේබලය පෙන්වන්න:",
- "sf_createtemplate_semanticproperty": "අර්ථ විචාර ගුණය:",
- "sf_createtemplate_aggregation": "සමූහනය",
- "sf_createtemplate_aggregationlabel": "ලැයිස්තුව සඳහා මාතෘකාව:",
- "sf_createtemplate_outputformat": "ප්‍රතිදාන ආකෘතිය:",
- "sf_createtemplate_standardformat": "වගුව",
- "sf_createtemplate_infoboxformat": "පැති තොරතුරුකොටුව",
- "sf_createtemplate_plainformat": "සාමාන්‍ය පෙළ",
- "sf_createtemplate_sectionsformat": "කොටස්",
- "sf_createtemplate_addfield": "ක්ෂේත්‍රය එක් කරන්න",
- "sf_createtemplate_deletefield": "මකන්න",
- "forms": "ෆෝරම",
- "sf_forms_docu": "පහත ෆොරමයන් විකියේ පවතී.",
- "sf_forminputs_mandatory": "මෙම ආදානය සඳහා අගයක් යෙදිය යුතු වේ",
- "sf_forminputs_default": "මෙම ආදානය සඳහා සාමාන්‍ය අගය",
- "sf_forminputs_rows": "මෙම ආදානය සඳහා පේළි ගණන",
- "sf_forminputs_cols": "මෙම ආදානය සඳහා තීර ගණන",
- "sf_forminputs_remoteautocompletion": "දුරස්ථ ස්වයංසම්පූර්ණවීම භාවිතා කරන්න",
- "sf_forminputs_existingvaluesonly": "දැනටමත් ලයිස්තුවේ තිබෙන අගයන්වලට පමණක් ඉඩ දේ",
- "sf_forminputs_hideroot": "මාපිය ප්‍රවර්ගය සඟවන්න",
- "sf_forminputs_height": "මෙම ආදානයේ උස, පික්සල් වලින්",
- "sf_forminputs_width": "මෙම ආදානයේ පළල, පික්සල් වලින්",
- "createform": "ෆෝරමයක් තනන්න",
- "sf-createform-with-name": "ෆෝරමය තනන්න: $1",
- "sf_createform_nameinput": "ෆෝරමයේ නම",
- "sf_createform_template": "සැකිල්ල",
- "sf_createform_templatelabelinput": "සැකිලි ලේබලය (වෛකල්පික):",
- "sf_createform_field": "ක්ෂේත්‍රය:",
- "sf_createform_inputtype": "ආදාන වර්ගය:",
- "sf_createform_inputtypedefault": "(සාමාන්‍ය)",
- "sf_createform_formlabel": "ෆෝරමයේ ලේබලය:",
- "sf_createform_hidden": "සඟවනලද",
- "sf_createform_removetemplate": "සැකිල්ල ඉවත් කරන්න",
- "sf_createform_addtemplate": "සැකිල්ල එක් කරන්න:",
- "sf_createform_atend": "අවසානයේදී",
- "sf_createform_add": "එක් කරන්න",
- "sf_createform_choosefield": "එක් කිරීමට ක්ෂේත්‍රයක් තෝරාගන්න",
- "sf_createform_before": "සැකිල්ලට පෙර:",
- "createcategory": "ප්‍රවර්ගයක් තනන්න",
- "sf-createcategory-with-name": "ප්‍රවර්ගය තනන්න: $1",
- "sf_createcategory_name": "ප්‍රවර්ග නාමය:",
- "sf_createcategory_defaultform": "සාමාන්‍ය ෆෝරමය:",
- "createclass": "වර්ගයක් තනන්න",
- "sf_createclass_allowedvalues": "ඉඩදෙන අගයන්:",
- "sf_createclass_listofvalues": "අගයන්වල ලැයිස්තුවක්?",
- "sf_createclass_nameinput": "ෆෝරමයේ නම:",
- "sf_createclass_missingvalues": "අවශ්‍ය ක්ෂේත්‍රයන් සියල්ලක්ම පුරවා නොමැත.",
- "sf_createclass_create": "තනන්න",
- "formstart": "ෆෝරමයේ ඇරඹුම",
- "sf_formstart_badform": "දෝෂය: \"$1\" පිටුවේ ෆෝරම කිසිවක් හමු නොවුනි.",
- "sf_formstart_badtitle": "දෝෂය: \"$1\" යනු වලංගු නොවන පිටු ශීර්ෂයකි.",
- "sf_formstart_createoredit": "තනන්න හෝ සංස්කරණය කරන්න",
- "formedit": "ෆෝරමය සමඟ සංස්කරණය කරන්න",
- "sf_formedit_createtitle": "තනන්න $1: $2",
- "sf_formedit_createtitlenotarget": "$1 තනන්න",
- "sf_formcreate": "ෆෝරමය සමඟ තනන්න",
- "sf_viewform": "ෆෝරමය නරඹන්න",
- "sf_editsource": "මූලාශ්‍රය සංස්කරණය කරන්න",
- "sf_formedit_edittitle": "සංස්කරණය $1: $2",
- "sf_formedit_remove": "ඉවත් කරන්න",
- "sf_formedit_addanother": "අනෙකක් එක් කරන්න",
- "sf_formedit_none": "කිසිවක් නොමැත",
- "sf_formedit_saveandcontinueediting": "සුරකිමින් ඉදිරියට යන්න",
- "sf_formedit_saveandcontinue_summary": "ආකෘතිපත්‍රයේ \"$1\" බොත්තම භාවිතා කරමින් සුරකින ලදී",
- "sf_formedit_tooltip_saveandcontinueediting": "දත්ත සුරක්ෂිත කර සංස්කරණය කරගෙන යන්න",
- "sf_autoedit_fail": "[[$1]] වෙනස් කිරීම අසාර්ථකයි.",
- "sf_autoedit_notargetspecified": "ඉලක්කගත පිටුවක් විශේෂණය කර නොමැත.",
- "sf_autoedit_invalidtargetspecified": "විශේෂණය කෙරූ ඉලක්කගත පිටුව $1 වලංගු නොවේ.",
- "sf_autoedit_invalidform": "$1 යනු වලංගු ෆෝරමයක් නොවේ.",
- "sf_autoedit_invalidpreloadspecified": "විශේෂණය කරන ලද $1 පූර්වපැටවුම් පිටුව වලංගු නොවේ.",
- "sf_autoedit_redlinkexists": "$1 දැනටමත් පවති.",
- "sf_autoedit_noformfound": "කිසිදු ෆෝරමයක් විශේෂණය කර නොමැත.",
- "sf_autoedit_toomanyformsfound": "පිටුව සඳහා ආකෘතිපත්‍ර එකකට වඩා ලබා ගත හැක.",
- "sf_autoedit_summary": "$1 පිටුවෙන් ස්වයංක්‍රියව සංස්කරණය වුණි.",
- "sf-autoedit-wait": "රැදෙන්න...",
- "runquery": "ප්‍රශ්නය දුවවන්න",
- "sf_runquery_title": "ප්‍රශ්නය දුවවන්න: $1",
- "sf_runquery_additionalquery": "අමතර ප්‍රශ්නය",
- "sf_blank_error": "හිස් නොවිය යුතුය",
- "sf_bad_email_error": "වලංගු විද්‍යුත් තැපැල් ආකෘතියක් විය යුතුය",
- "sf_bad_number_error": "වලංගු අංකයක් විය යුතුය",
- "sf_bad_date_error": "වලංගු දිනයක් විය යුතුය",
- "uploadwindow": "උඩුගත කිරීම් කවුළුව",
- "sf_deletionlog": "මකාදැමුම් ලොග් සටහන",
- "sf-preview-header": "ෆෝරමයේ පෙරදසුන",
- "sf-pageschemas-pagenameformula": "පිටු නාම රීතිය:",
- "sf-pageschemas-createtitle": "නව පිටු සඳහා ආකෘතිපත්‍රයේ ශීර්ෂය:",
- "sf-pageschemas-edittitle": "පවත්නා පිටු සඳහා ආකෘතිපත්‍රයේ ශීර්ෂය:",
- "sf-pageschemas-inputtype": "ආදාන වර්ගය (පෙරනිමියට සැකසීමට හිස්ව තබන්න):",
- "sf_property_isproperty": "මෙය $1 වර්ගයේ වත්කමකි.",
- "sf_template_docufooter": "සැකිලි පාඨය නැරඹීම සඳහා පිටුව සංස්කරණය කරන්න.",
- "sf_form_freetextlabel": "නිදහස් පාඨය",
- "sf_category_hasdefaultform": "මෙම ප්‍රවර්ගය $1 ආකෘතිපත්‍රය භාවිතා කරයි.",
- "sf_category_desc": "මෙය $1 ප්‍රවර්ගයයි.",
- "sf_blank_namespace": "ප්‍රධාන",
- "right-editrestrictedfields": "සීමිත ආකෘතිපත්‍ර ක්ෂේත්‍ර සංස්කරණය කරන්න",
- "right-createclass": "නව අර්ථ විචාර සමූහ තනන්න",
- "action-createclass": "නව අර්ථ විචාර සමූහ තනන්න",
- "action-editrestrictedfields": "සීමිත ආකෘතිපත්‍ර ක්ෂේත්‍ර සංස්කරණය කරන්න"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sk.json b/SemanticForms/i18n/sk.json
deleted file mode 100644
index d0d06438..00000000
--- a/SemanticForms/i18n/sk.json
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Helix84"
- ]
- },
- "semanticforms-desc": "Formuláre na pridávanie a úpravu sémantických údajov",
- "specialpages-group-sf_group": "Sémantické formuláre",
- "createproperty": "Vytvoriť vlastnosť",
- "sf_createproperty_linktoform": "Táto vlastnosť bude odkazovať na stránky, ktoré používajú formulár:",
- "sf_createproperty_allowedvalsinput": "Ak chcete povoliť tejto vlastnosti nadobúdať iba určité hodnoty, zadajte zoznam povolených hodnôt oddelených čiarkami (ak hodnota obsahuje čiarku, nahraďte ju „\\,“)",
- "sf_createproperty_propname": "Názov vlastnosti:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Šablóny",
- "sf_templates_docu": "Na wiki existujú nasledujúce šablóny.",
- "sf_templates_definescat": "definuje kategóriu: $1",
- "createtemplate": "Vytvoriť šablónu",
- "sf_createtemplate_namelabel": "Názov šablóny:",
- "sf_createtemplate_categorylabel": "Kategória definovaná šablónou (nepovinné):",
- "sf_createtemplate_templatefields": "Polia šablóny",
- "sf_createtemplate_fieldsdesc": "Aby už polia tejto šablóny nevyžadovali názvy polí, jednoducho zadajte ako názov index každého poľa (napr. 1, 2, 3 atď.) namiesto skutočného názvu.",
- "sf_createtemplate_fieldname": "Názov poľa:",
- "sf_createtemplate_displaylabel": "Zobrazovať označenie:",
- "sf_createtemplate_semanticproperty": "Sémantická vlastnosť:",
- "sf_createtemplate_fieldislist": "Toto pole môže uchovávať zoznam hodnôt oddelených čiarkami",
- "sf_createtemplate_aggregation": "Agregácia",
- "sf_createtemplate_aggregationdesc": "Na vypísanie všetkých stránok, ktorých určená vlastnosť odkazuje na danú stránku (na akejkoľvek stránke používajúcej túto šablónu), zadajte príslušnú vlastnosť:",
- "sf_createtemplate_aggregationlabel": "Názov zoznamu:",
- "sf_createtemplate_outputformat": "Výstupný formát:",
- "sf_createtemplate_standardformat": "Štandardný",
- "sf_createtemplate_infoboxformat": "Infobox na pravej strane",
- "sf_createtemplate_addfield": "Pridať pole",
- "sf_createtemplate_deletefield": "Zmazať",
- "forms": "Formuláre",
- "sf_forms_docu": "Na wiki existujú nasledové formuláre.",
- "sf_forminputs_mandatory": "Povinné",
- "sf_forminputs_restricted": "Obmedzené (môžu meniť iba správcovia)",
- "createform": "Vytvoriť formulár",
- "sf_createform_nameinput": "Názov formulára",
- "sf_createform_nameinputdesc": "(je zvykom pomenovať formulár podľa hlavnej šablóny, ktorú plní):",
- "sf_createform_template": "Šablóna:",
- "sf_createform_templatelabelinput": "Označenie šablóny (nepovinné):",
- "sf_createform_allowmultiple": "Povoliť vo vytvorenej stránke viacero (alebo nula) inštancií tejto šablóny",
- "sf_createform_field": "Pole:",
- "sf_createform_fieldprop": "Toto pole definuje vlastnosť $1 typu $2.",
- "sf_createform_fieldproplist": "Toto pole definuje zoznam prvkov, ktoré majú vlastnosť $1 typu $2.",
- "sf_createform_fieldpropunknowntype": "Toto pole definuje vlastnosť $1 neuvedeného typu.",
- "sf_createform_inputtype": "Typ vstupu:",
- "sf_createform_inputtypedefault": "(štandard)",
- "sf_createform_formlabel": "Označenie formulára:",
- "sf_createform_hidden": "Skrytý",
- "sf_createform_removetemplate": "Odstrániť šablónu",
- "sf_createform_addtemplate": "Pridať šablónu:",
- "sf_createform_atend": "Na konci",
- "sf_createform_add": "Pridať",
- "sf_createform_choosefield": "Zvoľte, ktoré pole pridať",
- "sf_createform_before": "Pred šablónou:",
- "sf_createform_additembeforesave": "Predtým, než budete môcť uložiť tento formulár mu musíte pridať aspoň jednu šablónu.",
- "createcategory": "Vytvoriť kategóriu",
- "sf_createcategory_name": "Názov kategórie:",
- "sf_createcategory_defaultform": "Štandardný formulár:",
- "sf_createcategory_makesubcategory": "Táto kategória je podkategóriou inej kategórie (nepovinné):",
- "createclass": "Vytvoriť triedu",
- "sf_createclass_docu": "Sem zadajte všetky údaje na vytvorenie vlastností, šablóny, formulára a kategórie jednej triedy. Ak chcete zadať ďalšie voľby, použite stránku $1.",
- "sf_createclass_allowedvalues": "Povolené hodnoty",
- "sf_createclass_listofvalues": "Zoznam hodnôt",
- "sf_createclass_missingvalues": "Neboli vyplnené všetky požadované polia.",
- "sf_createclass_success": "Vytvoria sa vlastnosti, šablóna, formulár a kategória.",
- "formstart": "Pridať stránku s formulárom",
- "sf_formstart_badform": "Chyba: na $1 nebola nájdená žiadna stránka formulára",
- "sf_formstart_badtitle": "Chyba: „$1“ nie je platný názov stránky.",
- "sf_formstart_docu": "Sem zadajte názov stránky, ktorá sa má upravovať formulárom „$1“. Ak táto stránka už existuje, budete presmerovaný na formulár pre úpravu tejto stránky. Inak budete presmerovaný na formulár pre pridanie tejto stránky.",
- "sf_formstart_noform_docu": "Sem zadajte názov stránky a vyberte, ktorým formulárom sa má upravovať. Ak táto stránka už existuje, budete presmerovaný na formulár pre úpravu tejto stránky. Inak budete presmerovaný na formulár pre pridanie tejto stránky.",
- "sf_formstart_createoredit": "Pridať alebo upraviť",
- "formedit": "Upraviť pomocou formulára",
- "sf_formedit_createtitle": "Pridať $1: $2",
- "sf_formedit_badurl": "Toto je stránka na pridávanie údajov. Musíte v URL uviesť názov formulára aj cieľovú stránku. Mala by byť v tvare „Special:FormEdit?form=<názov formulára>&target=<cieľová stránka>“ alebo „Special:FormEdit/<názov formulára>/<cieľová stránka>“.",
- "sf_formedit_altforms": "Namiesto toho môžete pridať túto stránku jedným z nasledovných formulárov:",
- "sf_formedit_altformsonly": "Prosím, vyberte jeden z nasledovných formulárov, ktorým sa pridá táto stránka.",
- "sf_formcreate": "Vytvoriť s formulárom",
- "sf_viewform": "Zobraziť formulár",
- "sf_editsource": "Upraviť zdroj",
- "sf_formedit_edittitle": "Upraviť $1: $2",
- "sf_formedit_morethanoneform": "Upozornenie: Táto stránka má definovaný viac ako jeden štandardný formulár.",
- "sf_formedit_formwarning": "Upozornenie: Táto stránka <a href=\"$1\">už existuje</a>, ale nepoužíva tento formulár.",
- "sf_formedit_remove": "Odstrániť",
- "sf_formedit_addanother": "Pridať ďalšiu",
- "sf_formedit_none": "Žiadne",
- "runquery": "Spustiť požiadavku",
- "sf_runquery_badurl": "Musíte v URL uviesť názov formulára;\nURL by malo byť v tvare „Special:RunQuery/<názov formulára>“",
- "sf_runquery_title": "Spustiť požiadavku: $1",
- "sf_runquery_additionalquery": "Ďalšia požiadavka",
- "sf_formerrors_header": "Zaslanie formulára, ktorý ste vyplnili, spôsobilo nasledovné chyby:",
- "sf_blank_error": "nemôže byť nevyplnené",
- "sf_bad_url_error": "musí mať správny formát URL, začínajúci „http“",
- "sf_bad_email_error": "musí mať správny formát emailovej adresy",
- "sf_bad_number_error": "musí byť platné číslo",
- "sf_bad_date_error": "musí byť platný dátum",
- "uploadwindow": "Okno nahrávania",
- "sf_deletionlog": "Záznam mazaní",
- "sf_property_isproperty": "Toto je vlastnosť typu $1.",
- "sf_property_linkstoform": "Odkazuje na stránky používajúce formulár $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Povolená hodnota|Povolené hodnoty}} tejto vlastnosti {{PLURAL:$1|je|sú}}:",
- "sf_template_docu": "Toto je šablóna „$1“. Mala by byť volaná v nasledovnom tvare:",
- "sf_template_docufooter": "Text šablóny uvidíte, keď začnete upravovať stránku.",
- "sf_form_docu": "Toto je formulár „$1“. Novú stránku pomocou tohto formulára pridáte zadaním názvu stránky dolu; ak stránka s takým názvom už existuje, budete presmerovaný na formulár pre úpravu tejto stránky.",
- "sf_form_freetextlabel": "Voľný text",
- "sf_category_hasdefaultform": "Táto kategória používa formulár $1.",
- "sf_category_desc": "Toto je kategória $1.",
- "sf_blank_namespace": "Hlavná",
- "right-viewedittab": "Zobraziť zíložku „Upraviť“ na stránkach, ktoré možno upraviť pomocou formulára",
- "right-editrestrictedfields": "Upraviť polia formulára s obmedzeným prístupom"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sl.json b/SemanticForms/i18n/sl.json
deleted file mode 100644
index 94cdc248..00000000
--- a/SemanticForms/i18n/sl.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Dbc334"
- ]
- },
- "sf_createtemplate_connectingproperty": "Ime lastnosti za povezovanje polj te predloge s preostalo stranjo:",
- "sf_createform_add": "Dodaj",
- "formedit": "Uredi z obrazcem",
- "right-viewedittab": "Ogled zavihka »{{int:edit}}« za strani, ki jih lahko urejate z obrazcem"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sr-ec.json b/SemanticForms/i18n/sr-ec.json
deleted file mode 100644
index 44535a78..00000000
--- a/SemanticForms/i18n/sr-ec.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Rancher",
- "Sasa Stefanovic",
- "Жељко Тодоровић",
- "Михајло Анђелковић"
- ]
- },
- "specialpages-group-sf_group": "Семантички обрасци",
- "createproperty": "Направи особину",
- "sf_createproperty_linktoform": "Ова особина ће повезивати на стране, које користе форму:",
- "sf_createproperty_allowedvalsinput": "Ако желите да овој особини буде дозвољено да има само одређене вредности, унесите списак дозвољених вредност, одвојених зарезима (ако вредност садржи зарез, пишите га као „\\,“):",
- "sf_createproperty_propname": "Име особине:",
- "sf_createproperty_proptype": "Врста:",
- "templates": "Шаблони",
- "sf_templates_docu": "Следећи шаблони постоје у Викију.",
- "sf_templates_definescat": "дефинише категорију: $1",
- "createtemplate": "Направи шаблон",
- "sf_createtemplate_namelabel": "Име шаблона:",
- "sf_createtemplate_categorylabel": "Категорија дефинисана шаблоном (опционо):",
- "sf_createtemplate_templatefields": "Поља шаблона",
- "sf_createtemplate_fieldname": "Име поља:",
- "sf_createtemplate_displaylabel": "Натпис за приказ:",
- "sf_createtemplate_semanticproperty": "Семантичко својство:",
- "sf_createtemplate_fieldislist": "Ово поље може да садржи списак вредности, одвојених зарезима",
- "sf_createtemplate_aggregation": "Агрегација",
- "sf_createtemplate_aggregationlabel": "Наслов листе:",
- "sf_createtemplate_outputformat": "Излазни формат:",
- "sf_createtemplate_standardformat": "Стандард",
- "sf_createtemplate_addfield": "Додај поље",
- "sf_createtemplate_deletefield": "Обриши",
- "forms": "Форме",
- "sf_forms_docu": "Следеће форме постоје на Викију.",
- "createform": "Направи форму",
- "sf_createform_nameinput": "Име форме",
- "sf_createform_template": "Шаблон:",
- "sf_createform_field": "Поље:",
- "sf_createform_fieldprop": "Ово поље дефинише особину $1, типа $2.",
- "sf_createform_inputtype": "Врста уноса:",
- "sf_createform_inputtypedefault": "(подразумевано)",
- "sf_createform_formlabel": "Из лабеле:",
- "sf_createform_hidden": "Сакривено",
- "sf_createform_removetemplate": "Обриши шаблон",
- "sf_createform_addtemplate": "Додај шаблон:",
- "sf_createform_atend": "На крају",
- "sf_createform_add": "Додај",
- "sf_createform_choosefield": "Изабери поље за додавање",
- "sf_createform_before": "Пре шаблона:",
- "createcategory": "Направи категорију",
- "sf_createcategory_name": "Име категорије:",
- "sf_createcategory_defaultform": "Подразумевана форма:",
- "createclass": "Направи класу",
- "sf_createclass_allowedvalues": "Дозвољене вредности:",
- "sf_createclass_listofvalues": "Списак вредности?",
- "formstart": "Почетак форме",
- "sf_formstart_createoredit": "Направи или измени",
- "formedit": "Измени формом",
- "sf_formedit_createtitle": "Направи $1: $2",
- "sf_editsource": "Уреди извор",
- "sf_formedit_edittitle": "Измени $1: $2",
- "sf_formedit_remove": "Уклони",
- "sf_formedit_none": "Нема",
- "sf_bad_number_error": "мора бити исправан број",
- "sf_bad_date_error": "мора бити исправан датум",
- "uploadwindow": "Прозор за слање",
- "sf_deletionlog": "Историја брисања",
- "sf_form_freetextlabel": "Слободан текст"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sr-el.json b/SemanticForms/i18n/sr-el.json
deleted file mode 100644
index 0925091c..00000000
--- a/SemanticForms/i18n/sr-el.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Michaello",
- "Rancher",
- "Жељко Тодоровић"
- ]
- },
- "specialpages-group-sf_group": "Semantički obrasci",
- "createproperty": "Napravi osobinu",
- "sf_createproperty_linktoform": "Ova osobina će povezivati na strane, koje koriste formu:",
- "sf_createproperty_allowedvalsinput": "Ako želite da ovoj osobini bude dozvoljeno da ima samo određene vrednosti, unesite spisak dozvoljenih vrednost, odvojenih zarezima (ako vrednost sadrži zarez, pišite ga kao „\\,“):",
- "sf_createproperty_propname": "Ime osobine:",
- "sf_createproperty_proptype": "Vrsta:",
- "templates": "Šabloni",
- "sf_templates_docu": "Sledeći šabloni postoje u Vikiju.",
- "sf_templates_definescat": "definiše kategoriju: $1",
- "createtemplate": "Napravi šablon",
- "sf_createtemplate_namelabel": "Ime šablona:",
- "sf_createtemplate_categorylabel": "Kategorija definisana šablonom (opciono):",
- "sf_createtemplate_templatefields": "Polja šablona",
- "sf_createtemplate_fieldname": "Ime polja:",
- "sf_createtemplate_displaylabel": "Natpis za prikaz:",
- "sf_createtemplate_semanticproperty": "Semantičko svojstvo:",
- "sf_createtemplate_fieldislist": "Ovo polje može da sadrži spisak vrednosti, odvojenih zarezima",
- "sf_createtemplate_aggregation": "Agregacija",
- "sf_createtemplate_aggregationlabel": "Naslov liste:",
- "sf_createtemplate_outputformat": "Izlazni format:",
- "sf_createtemplate_standardformat": "Standard",
- "sf_createtemplate_addfield": "Dodaj polje",
- "sf_createtemplate_deletefield": "Obriši",
- "forms": "Forme",
- "sf_forms_docu": "Sledeće forme postoje na Vikiju.",
- "createform": "Napravi formu",
- "sf_createform_nameinput": "Ime forme",
- "sf_createform_template": "Šablon:",
- "sf_createform_field": "Polje:",
- "sf_createform_fieldprop": "Ovo polje definiše osobinu $1, tipa $2.",
- "sf_createform_inputtype": "Vrsta unosa:",
- "sf_createform_inputtypedefault": "(podrazumevano)",
- "sf_createform_formlabel": "Iz labele:",
- "sf_createform_hidden": "Sakriveno",
- "sf_createform_removetemplate": "Obriši šablon",
- "sf_createform_addtemplate": "Dodaj šablon:",
- "sf_createform_atend": "Na kraju",
- "sf_createform_add": "Dodaj",
- "sf_createform_choosefield": "Izaberi polje za dodavanje",
- "sf_createform_before": "Pre šablona:",
- "createcategory": "Napravi kategoriju",
- "sf_createcategory_name": "Ime kategorije:",
- "sf_createcategory_defaultform": "Podrazumevana forma:",
- "createclass": "Napravi klasu",
- "sf_createclass_allowedvalues": "Dozvoljene vrednosti:",
- "sf_createclass_listofvalues": "Spisak vrednosti?",
- "formstart": "Početak forme",
- "sf_formstart_createoredit": "Napravi ili izmeni",
- "formedit": "Izmeni formom",
- "sf_formedit_createtitle": "Napravi $1: $2",
- "sf_editsource": "Uredi izvor",
- "sf_formedit_edittitle": "Izmeni $1: $2",
- "sf_formedit_remove": "Ukloni",
- "sf_formedit_none": "Nema",
- "sf_bad_number_error": "mora biti ispravan broj",
- "sf_bad_date_error": "mora biti ispravan datum",
- "uploadwindow": "Prozor za slanje",
- "sf_deletionlog": "Istorija brisanja",
- "sf_form_freetextlabel": "Slobodan tekst"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/stq.json b/SemanticForms/i18n/stq.json
deleted file mode 100644
index bcb3da19..00000000
--- a/SemanticForms/i18n/stq.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Pyt"
- ]
- },
- "createproperty": "Moak ne Oainskup",
- "sf_createproperty_allowedvalsinput": "Wan du foar dit Attribut bloot bestimde Wäide muugelk moakje wolt, reek do dan as kommatrände Lieste ien (wan n Wäid n Komma änthaalt, ärsät dit truch \"\\,\" sunner Anfierengen):",
- "sf_createproperty_propname": "Attributnoome:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Foarloage",
- "sf_templates_docu": "Do foulgjende Foarloagen existierje in {{SITENAME}}.",
- "sf_templates_definescat": "definiert Kategorie: $1",
- "createtemplate": "Moak ne Foarloage",
- "sf_createtemplate_namelabel": "Foarloagenoome:",
- "sf_createtemplate_categorylabel": "Truch Foarloage definierde Kategorie (optionoal):",
- "sf_createtemplate_templatefields": "Foarloagenfäilde",
- "sf_createtemplate_fieldsdesc": "Wan n Fäild fon ne Foarloage naan Fäildnoome moor bruukt, reek eenfach insteede fon n wuudelken Noome ju Indexnummer fon dät Fäild as Noome ien (t.B. 1, 2, 3 usw.).",
- "sf_createtemplate_fieldname": "Fäildnoome:",
- "sf_createtemplate_displaylabel": "Antouwiesende Fäildbeteekenge:",
- "sf_createtemplate_semanticproperty": "Semantiske Oainskup:",
- "sf_createtemplate_fieldislist": "Dit Fäild kon ne Lieste fon Wäide änthoolde, do der truch Kommata tränd wäide.",
- "sf_createtemplate_addfield": "Föich Fäild bietou",
- "sf_createtemplate_deletefield": "Läskje",
- "forms": "Formulare",
- "sf_forms_docu": "Do foulgjende Formulare existierje in {{SITENAME}}:",
- "sf_forminputs_mandatory": "Plichtfäild",
- "sf_forminputs_restricted": "Speerd (bloot Sysops konnen annerje)",
- "createform": "Moak n Formular",
- "sf_createform_nameinput": "Formularnoome",
- "sf_createform_template": "Foarloage:",
- "sf_createform_templatelabelinput": "Foarloagebeteekenge (optionoal)",
- "sf_createform_allowmultiple": "Ferlööwje moorere (of nul) Instanzen fon disse Foarloage in ju moakede Siede",
- "sf_createform_field": "Fäild:",
- "sf_createform_fieldprop": "Dit Fäild definiert ju Oainskup $1 fon dän Typ $2.",
- "sf_createform_fieldproplist": "Dit Fäild definiert ne Lieste fon Elemente, do ju Oainskup $1 fon dän Typ $2 hääbe.",
- "sf_createform_fieldpropunknowntype": "Dit Fäild definiert ju Oainskup $1 mäd n nit-spezifizierten Typ.",
- "sf_createform_inputtype": "Reek dän Typ ien:",
- "sf_createform_inputtypedefault": "(Standoardwäid)",
- "sf_createform_formlabel": "Formularbeteekenge:",
- "sf_createform_hidden": "Ferstat",
- "sf_createform_removetemplate": "Foarloage wächhoalje",
- "sf_createform_addtemplate": "Föich Foarloage bietou",
- "sf_createform_atend": "ap e Eend",
- "sf_createform_add": "Föich bietou",
- "sf_createform_choosefield": "Wääl n Fäild uut, dät du bietouföigje wolt.",
- "sf_createform_before": "foar Foarloage",
- "sf_createform_additembeforesave": "Du moast mindestens ne Foarloage an dit Formular bietouföigje, eer du dät spiekerje koast.",
- "createcategory": "Moak ne Kategorie",
- "sf_createcategory_name": "Noome fon ju Kategorie:",
- "sf_createcategory_defaultform": "Standoardformular:",
- "sf_createcategory_makesubcategory": "Moak disse Kategorie tou ne Subkategorie fon n uur Kategorie (optional):",
- "formstart": "Föich Siede bietou",
- "sf_formstart_badform": "Failer: der wuude neen Siede fuunen bie $1",
- "sf_formstart_docu": "Reek in dit Textfäild dän Noome fon ju Siede ien, ju der mäd Formular '$1' beoarbaided wäide skäl. Wan der al ne Siede mäd dissen Noome bestoant, wädst du tou n Formular fäärelat, wiermäd du disse Siede beoarbaidje koast. Uurs wädst du tou n Formular fäärelat, wiermäd du disse Siede moakje koast.",
- "sf_formstart_noform_docu": "Reek in dit Textfäild dän Noome fon ju Siede ien un wääl dät Formular, wiermäd ju Siede beoarbaided wäide skäl. Wan der al ne Siede mäd dissen Noome bestoant, wädst du tou n Formular fäärelät, wiermäd du disse Siede beoarbaidje koast. Uurs wädst du tou n Formular fäärelat, wiermäd du disse Siede moakje koast.",
- "sf_formstart_createoredit": "Bietouföigje of beoarbaidje",
- "formedit": "Beoarbaidje mäd Formular",
- "sf_formedit_createtitle": "Föich $1: $2 bietou",
- "sf_formedit_badurl": "Dit is ju Siede toun Bietouföigjen fon Doaten. Du moast dän Noome fon n Formular UN ju tou beoarbaidjende Sielsiede in ju URL anreeke. Dät skuul uutsjo as 'Special:FormEdit?form=<Formularnoome>&target=<Sielsiede>' of 'Special:FormEdit/<Formularnoome>/<Sielsiede>'.",
- "sf_formedit_altforms": "Du koast insteede deerfon disse Siede mäd een fon do foulgjende Formulare moakje:",
- "sf_formedit_altformsonly": "Wääl een fon do foulgjende Formulare uut, uum disse Siede tou moakjen:",
- "sf_editsource": "Beoarbaidje Wältext",
- "sf_formedit_edittitle": "Beoarbaidje $1: $2",
- "sf_formedit_formwarning": "Woarskauenge: Disse Siede <a href=\"$1\">bestoant al</a>, oawers ju benutset dit Formular nit.",
- "sf_formedit_remove": "Wächhoalje",
- "sf_formedit_addanother": "Wiedere bietouföigje",
- "sf_blank_error": "Duur nit loos weese!",
- "sf_bad_url_error": "mout dät korrekte URL-Format hääbe, ounfangend mäd 'http://'",
- "sf_bad_email_error": "mout n gultich Email-Adresformoat hääbe",
- "sf_bad_number_error": "mout ne gultige Taal weese",
- "sf_bad_date_error": "mout n gultich Doatum weese",
- "sf_property_isproperty": "Dit is ne Oainskup fon dän Typ $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Die muugelke Wäid foar disse Oainskup is|Do muugelke Wäide foar disse Oainskup sunt}}:",
- "sf_template_docu": "Dit is ju Foarloage foar '$1'. Ju skuul in dät foulgjende Formoat apruupen wäide:",
- "sf_template_docufooter": "Beoarbaidje disse Siede, uum dän Foarloagentext tou sjoon.",
- "sf_form_docu": "Reek in dit Textfäild dän Noome fon ju Siede ien, ju der mäd Formular '$1' moaked wäide skäl. Wan der al ne Siede mäd dissen Noome bestoant, wädst du tou n Formular fäärelat, wiermäd du disse Siede beoarbaidje koast.",
- "sf_form_freetextlabel": "Fräitext",
- "sf_category_hasdefaultform": "Disse Kategorie benutset dät Formular $1.",
- "sf_category_desc": "Dit is ju Kategorie $1."
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sv.json b/SemanticForms/i18n/sv.json
deleted file mode 100644
index 750e9285..00000000
--- a/SemanticForms/i18n/sv.json
+++ /dev/null
@@ -1,189 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jon Harald Søby",
- "Lejonel",
- "M.M.S.",
- "Martinwiss",
- "Najami",
- "Per",
- "Rotsee",
- "WikiPhoenix"
- ]
- },
- "semanticforms-desc": "Formulär för att lägga till och redigera semantisk data",
- "specialpages-group-sf_group": "Semantiska formulär",
- "createproperty": "Skapa en egenskap",
- "sf-createproperty-with-name": "Skapa egenskap: $1",
- "sf_createproperty_linktoform": "Denna egenskap kommer länka till sidor som använder formuläret:",
- "sf_createproperty_allowedvalsinput": "Om du önskar att detta fält endast ska kunna ha vissa värden, lista tillåtna värden, separerade med komma (om ett värde innehåller komma, ersätt det med \"\\,\"):",
- "sf_createproperty_propname": "Egenskapsnamn:",
- "sf_createproperty_proptype": "Typ:",
- "templates": "Mallar",
- "sf_templates_docu": "Följande mallar finns på wikin.",
- "sf_templates_definescat": "definierar kategori: $1",
- "createtemplate": "Skapa en mall",
- "sf-createtemplate-with-name": "Skapa mall: $1",
- "sf_createtemplate_namelabel": "Mallnamn:",
- "sf_createtemplate_multipleinstance": "Mallen kan användas flera gånger på sidan.",
- "sf_createtemplate_connectingproperty": "Namnet på egenskapen som ansluter den här mallen indata-fält till resten av sidan:",
- "sf_createtemplate_categorylabel": "Kategori definierad av mall (valfri):",
- "sf_createtemplate_templatefields": "Mallfält",
- "sf_createtemplate_fieldsdesc": "För att fälten i denna mall inte längre ska kräva fältnamn, skriv in indexnummret till varje fält (alltså 1, 2, 3, osv.) som namn, i stället för ett riktigt namn.",
- "sf_createtemplate_fieldname": "Fältnamn:",
- "sf_createtemplate_displaylabel": "Visa etikett:",
- "sf_createtemplate_semanticproperty": "Semantisk egenskap:",
- "sf_createtemplate_fieldislist": "Detta fält kan innehålla en lista över värden, separarat med komma",
- "sf_createtemplate_aggregation": "Aggregering",
- "sf_createtemplate_aggregationdesc": "Ange en egenskap här nedanför om du vill att den här mallen ska kunna användas för att lista alla sidor som har en särskild egenskap som pekar till den sidan:",
- "sf_createtemplate_aggregationlabel": "Titel för lista:",
- "sf_createtemplate_outputformat": "Resultatformatering:",
- "sf_createtemplate_standardformat": "Tabell",
- "sf_createtemplate_infoboxformat": "Faktaruta",
- "sf_createtemplate_plainformat": "Ren text",
- "sf_createtemplate_sectionsformat": "Avsnitt",
- "sf_createtemplate_addfield": "Lägg till fält",
- "sf_createtemplate_deletefield": "Radera",
- "forms": "Formulär",
- "sf_forms_docu": "Följande formulär finns på wikin.",
- "sf_forminputs_mandatory": "Obligatorisk",
- "sf_forminputs_restricted": "Endast administratörer kan redigera detta fält",
- "sf_forminputs_class": "HTML-klass (\"class\") för det här fältet",
- "sf_forminputs_default": "Standardvärde för det här fältet",
- "sf_forminputs_preload": "Wikisida vars innehåll används som standardvärde för det här fältet",
- "sf_forminputs_property": "Semantisk egenskap som det här fältet motsvarar",
- "sf_forminputs_size": "Storlek på textfältet, i antal tecken",
- "sf_forminputs_maxlength": "Maximalt antal tecken i det här fältet",
- "sf_forminputs_placeholder": "Instruktion som visas i indatafältet till dess att användaren klickar på det",
- "sf_forminputs_uploadable": "Placera länken \"{{int:upload}}\" intill det här fältet",
- "sf_forminputs_defaultfilename": "Förvalt filnamn för uppladdade filer",
- "sf_forminputs_rows": "Antal rader för det här fältet",
- "sf_forminputs_cols": "Antal kolumner för det här fältet",
- "sf_forminputs_autogrow": "Låt det här fältet växa automatiskt, i takt med att det fylls på",
- "sf_forminputs_valuesfromproperty": "En egenskap vars värden i wikin ska användas som det här indatafältets möjliga värden",
- "sf_forminputs_valuesfromcategory": "En kategori vars sidor ska användas som det här indatafältets möjliga värden",
- "sf_forminputs_valuesfromnamespace": "En namnrymd vars sidor ska användas som det här indatafältets möjliga värden",
- "sf_forminputs_valuesfromconcept": "En begreppssida för Semantiska MediaWiki med sidor som ska utgöra möjliga värden att välja",
- "sf_forminputs_valuesfromurl": "En URL som innehåller data som ska utgöra möjliga värden att välja",
- "sf_forminputs_values": "Värdena som är möjliga att välja, separerade med komma",
- "sf_forminputs_list": "Ange att detta indatafält kan ha flera värden (i en lista)",
- "sf_forminputs_delimiter": "Tecken som avgränsar värdena i indatafältet (om indatafältet kan ha flera värden i en lista)",
- "sf_forminputs_remoteautocompletion": "Använd extern automatisk ifyllnad av fält",
- "sf_forminputs_existingvaluesonly": "Tillåt endast värden som redan finns i listan",
- "sf_forminputs_showonselect": "Sidobjekt som ska visas enbart om vissa värden är valda (t.ex: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "Höjden på den här listrutan, i textrader",
- "sf_forminputs_includetimezone": "Använd indatafält för tidszon",
- "sf_forminputs_topcategory": "Överordnad kategori (obligatiskt)",
- "sf_forminputs_hideroot": "Göm den överordnade kategorin",
- "sf_forminputs_depth": "Antal kategorinivåer att visa från början",
- "sf_forminputs_height": "Höjden på det här fältet, i pixlar",
- "sf_forminputs_width": "Bredden på det här fältet, i pixlar",
- "createform": "Skapa ett formulär",
- "sf-createform-with-name": "Skapa formulär: $1",
- "sf_createform_nameinput": "Formulärnamn",
- "sf_createform_nameinputdesc": "(forumuläret brukar ofta ges samma namn som mallen den använder):",
- "sf_createform_template": "Mall:",
- "sf_createform_templatelabelinput": "Malletikett (valfritt):",
- "sf_createform_allowmultiple": "Tillåt flera (eller inga) instanser av denna mall på sidan som skapades",
- "sf_createform_field": "Fält:",
- "sf_createform_fieldprop": "Det här fältet definierar egenskapen $1, av typen $2.",
- "sf_createform_fieldproplist": "Det här fältet definierar en lista över element som har egenskapen $1, av typen $2.",
- "sf_createform_fieldpropunknowntype": "Det här fältet definierar egenskapen $1, av ospecifierad typ.",
- "sf_createform_inputtype": "Inskrivningstyp:",
- "sf_createform_inputtypedefault": "(standard)",
- "sf_createform_formlabel": "Formuläretikett:",
- "sf_createform_hidden": "Dolda",
- "sf_createform_removetemplate": "Ta bort mall",
- "sf_createform_addtemplate": "Lägg till mall:",
- "sf_createform_atend": "Vid slutet",
- "sf_createform_add": "Lägg till",
- "sf_createform_choosefield": "Välj ett fält att lägga till",
- "sf_createform_before": "Före mall:",
- "sf_createform_additembeforesave": "Du måste lägga till minst en mall till detta formulär innan du kan spara det.",
- "createcategory": "Skapa en kategori",
- "sf-createcategory-with-name": "Skapa kategori: $1",
- "sf_createcategory_name": "Kategorinamn:",
- "sf_createcategory_defaultform": "Standardformulär:",
- "sf_createcategory_makesubcategory": "Gör detta till en underkategori av en annan kategori (valfritt):",
- "createclass": "Skapa en klass",
- "sf_createclass_docu": "Skriv in all data här för att skapa egenskaper, mallar, scheman och kategorier för en klass. För fler alternativ använd sidan $1 istället.",
- "sf_createclass_allowedvalues": "Tillåtna värden:",
- "sf_createclass_listofvalues": "Lista med flera värden?",
- "sf_createclass_nameinput": "Formulärnamn:",
- "sf_createclass_missingvalues": "Några obligatoriska fält blev inte ifyllda.",
- "sf_createclass_success": "Egenskaper, mallar, formulär och kategorier kommer att skapas.",
- "sf_createclass_create": "Skapa",
- "formstart": "Lägg till sida genom ett formulär",
- "sf_formstart_badform": "Fel: ingen formulärsida hittades på $1",
- "sf_formstart_badtitle": "Fel: \"$1\" är inte en giltig titel på en sida.",
- "sf_formstart_docu": "Skriv in namnet på sidan som ska redigeras med formuläret \"$1\" här.\nOm sidan redan existerar kommer du skickas över till formulärt för redigering av den sidan.\nOm du inte skickas över till formuläret för att skapa sidan.",
- "sf_formstart_noform_docu": "Skriv in namnet på sidan här, och välj vilket formulär du vill använda till att redigera den.\nOm sidan redan existerar, kommer du skickas över till formuläret för redigering av den sidan.\nOm du inte kommer skickas över till formuläret för att skapa sidan.",
- "sf_formstart_createoredit": "Skapa eller redigera",
- "formedit": "Redigera med formulär",
- "sf_formedit_createtitle": "Skapa $1: $2",
- "sf_formedit_createtitlenotarget": "Skapa $1",
- "sf_formedit_badurl": "Det här är sidan för att lägga till data. Du måste ange både ett formulärnamn och en målsida i URL-en;\ndet borde se ut som; \"Special:FormEdit?form=<´formulärnamn>&target=<målsida>\", eller som: \"Special:FormEdit/<form name>/<target page>\".",
- "sf_formedit_altforms": "Du kan istället skapa sidan genom att använda ett av följande formulär:",
- "sf_formedit_altformsonly": "Var god välj från en av de följande formulären för att lägga till den här sidan:",
- "sf_formcreate": "Skapa med formulär",
- "sf_viewform": "Visa formulär",
- "sf_editsource": "Redigera källa",
- "sf_formedit_edittitle": "Redigera $1: $2",
- "sf_formedit_morethanoneform": "'''Varning:''' Mer än ett förvalt forumlär har angetts för denna sida.",
- "sf_formedit_formwarning": "Varning: Den här sidan <a href=\"$1\">finns redan</a>, men använder inte det här formuläret.",
- "sf_formedit_mismatchedbrackets": "Varning: Den här sidan innehåller krull- eller hakparenteser som inte är balanserade. Sidan kommer därför inte att hanteras korrekt av formuläret. Var vänlig <a href=\"$1\">rätta till felet i wikitexten/källtexten</a> innan du fortsätter.",
- "sf_formedit_remove": "Radera denna instans",
- "sf_formedit_addanotherabove": "Lägg till ett nytt fält ovanför detta",
- "sf_formedit_addanother": "Lägg till en annan",
- "sf_formedit_none": "Ingen",
- "sf_formedit_emptytitle": "Fel: Angiven data resulterade i en tom sidtitel.",
- "sf_formedit_hookerror": "Fel: Ett tillägg till MediaWiki gör att det inte går att ändra målsidan",
- "sf_formedit_saveandcontinueediting": "Spara och fortsätt",
- "sf_formedit_saveandcontinue_summary": "Sparad med hjälp av \"$1\"-knappen i formuläret",
- "sf_formedit_tooltip_saveandcontinueediting": "Spara data och fortsätt redigera",
- "sf_autoedit_anoneditwarning": "Varning: Du är inte inloggad. Din IP-adress kommer att sparas i historiken för den här sidan.",
- "sf_autoedit_success": "Har ändrat [[$1]] med hjälp av formulär $2.",
- "sf_autoedit_notargetspecified": "Ingen målsida angiven.",
- "sf_autoedit_invalidform": "$1 är inte ett giltigt formulär",
- "sf_autoedit_redlinkexists": "$1 finns redan.",
- "sf_autoedit_noformfound": "Inget formulär angivet.",
- "sf_autoedit_toomanyformsfound": "Inte mer än ett formulär är tillgängligt för sidan.",
- "sf_autoedit_readonly": "Databasen är för tillfället låst så att ändringar inte går att genomföra. Orsaken är: $1",
- "sf_autoedit_nosemanticform": "Kan inte få formulär $2 för sidan $1. Se [[{{#special:FormEdit}}/$2/$1]] för ytterligare information.",
- "sf_autoedit_summary": "Har redigerats automatiskt från sidan $1.",
- "sf-autoedit-wait": "Var vänlig vänta...",
- "runquery": "Kör sökning",
- "sf_runquery_badurl": "Du måste ange ett namn på ett formulär i URL-en;\nURL-en måste se ut som 'Special:RunQuery/<form name>'.",
- "sf_runquery_title": "Kör sökning: $1",
- "sf_runquery_additionalquery": "Ytterligare fråga",
- "sf_formerrors_header": "Det fanns fel i ditt formulär; se nedan",
- "sf_blank_error": "kan inte vara tom",
- "sf_bad_url_error": "måste ha korrekt URL-format, inkluderande \"http\"",
- "sf_bad_email_error": "måste ha ett giltigt format på e-postadressen",
- "sf_bad_number_error": "måste vara ett giltigt tal",
- "sf_bad_date_error": "måste vara ett giltigt datum",
- "uploadwindow": "Uppladdningsfönster",
- "sf_deletionlog": "Raderingslogg",
- "sf-preview-header": "Förgranska formulär",
- "sf-preview-note": "Så här kommer formuläret att se ut när det används:",
- "sf-pageschemas-pagenameformula": "Formel för sidnamn:",
- "sf-pageschemas-createtitle": "Titel på formulär för nya sidor:",
- "sf-pageschemas-edittitle": "Titel på formulär för befintliga sidor:",
- "sf-pageschemas-inputtype": "Typ av indatafält (lämna tom för förvald typ):",
- "sf_property_isproperty": "Det här är en egenskap av typen $1.",
- "sf_property_linkstoform": "Det länkar till sidor som använder formuläret $1",
- "sf_property_allowedvals": "{{PLURAL:$1|Det tillåtna värdet för den här egenskapen är|De tillåtna värdena för den här egenskapen är}}:",
- "sf_template_docu": "Det här är mallen \"$1\".\nDen används så här:",
- "sf_template_docufooter": "Redigera sidan för att se mall texten.",
- "sf_form_docu": "Det här är formuläret \"$1\".\n\nFör att lägga till en ny sida med hjälp av det här formuläret; skriv in namnet på sidan här nedanför.\n\nOm en sida med det namnet redan finns, så kommer formuläret istället användas för att redigera befintliga data för den sidan.",
- "sf_form_freetextlabel": "Fritext",
- "sf_category_hasdefaultform": "Den här kategorin använder formuläret $1.",
- "sf_category_desc": "Detta är $1 kategorin.",
- "sf_blank_namespace": "Huvud",
- "right-viewedittab": "Visa fliken \"{{int:edit}}\" för sidor som går att redigera med formulär",
- "right-editrestrictedfields": "Redigera formulär som är begränsade",
- "right-createclass": "Skapa en ny semantisk klass",
- "action-createclass": "skapa nya semantiska klasser",
- "action-editrestrictedfields": "redigera begränsade formulär-fält",
- "action-viewedittab": "visa fliken \"{{int:edit}}\" för sidor som går att redigera med formulär"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/sw.json b/SemanticForms/i18n/sw.json
deleted file mode 100644
index 6c776db9..00000000
--- a/SemanticForms/i18n/sw.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Stephenwanjau"
- ]
- },
- "sf_createproperty_proptype": "Aina:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/szl.json b/SemanticForms/i18n/szl.json
deleted file mode 100644
index a1d8718e..00000000
--- a/SemanticForms/i18n/szl.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Herr Kriss"
- ]
- },
- "sf_createproperty_propname": "Mjano:",
- "sf_createform_add": "Dodej",
- "sf_createcategory_name": "Mjano:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ta.json b/SemanticForms/i18n/ta.json
deleted file mode 100644
index e2f1af27..00000000
--- a/SemanticForms/i18n/ta.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Jayarathina",
- "Shanmugamp7",
- "TRYPPN"
- ]
- },
- "sf_createproperty_proptype": "வகை:",
- "templates": "வார்ப்புருக்கள்",
- "createtemplate": "ஒரு வார்ப்புருவை உருவாக்கவும்",
- "sf_createtemplate_namelabel": "வார்ப்புரு பெயர்:",
- "sf_createtemplate_templatefields": "வார்ப்புரு புலங்கள்",
- "sf_createtemplate_fieldname": "புலப் பெயர்:",
- "sf_createtemplate_standardformat": "அட்டவணை",
- "sf_createtemplate_infoboxformat": "ஓர தகவற்பெட்டி",
- "sf_createtemplate_plainformat": "எளிய உரை",
- "sf_createtemplate_sectionsformat": "பிரிவுகள்",
- "sf_createtemplate_addfield": "Add field",
- "sf_createtemplate_deletefield": "நீக்கவும்",
- "forms": "படிவங்கள்",
- "createform": "ஒரு படிவத்தை உருவாக்கவும்",
- "sf-createform-with-name": "படவத்தை உருவாக்கு : $1",
- "sf_createform_nameinput": "படிவப் பெயர்",
- "sf_createform_template": "வார்ப்புரு:",
- "sf_createform_field": "புலம்",
- "sf_createform_inputtype": "உள்ளீட்டு வகை:",
- "sf_createform_inputtypedefault": "(இயல்பிருப்பு)",
- "sf_createform_formlabel": "படிவ வில்லை:",
- "sf_createform_hidden": "மறைக்கப்பட்டது",
- "sf_createform_removetemplate": "வார்ப்புருவை நீக்கு",
- "sf_createform_addtemplate": "வார்ப்புருவைச் சேர்",
- "sf_createform_atend": "இறுதியில்",
- "sf_createform_add": "சேர்",
- "sf_createform_choosefield": "சேர்க்க ஒரு புலத்தை தேர்வு செய்யவும்",
- "sf_createform_before": "வார்ப்புருவிற்கு முன்:",
- "createcategory": "ஒரு பகுப்பை உருவாக்கவும்",
- "sf-createcategory-with-name": "பகுப்பை உருவாக்கு: $1",
- "sf_createcategory_name": "பகுப்புப் பெயர்:",
- "sf_createcategory_defaultform": "இயல்புநிலை படிவம்:",
- "sf_createcategory_makesubcategory": "இதை மற்றொரு பகுப்பின் துணைப் பகுப்பாக்கு (விருப்பத்தேர்வு):",
- "createclass": "ஒரு படிநிலையை உருவாக்கவும்",
- "sf_createclass_allowedvalues": "அனுமதிக்கப்பட்ட மதிப்புகள்",
- "sf_createclass_listofvalues": "மதிப்புகளின் பட்டியல்?",
- "sf_createclass_nameinput": "படிவப் பெயர்:",
- "sf_createclass_missingvalues": "அனைத்து தேவைப்படும் புலங்களும் நிரப்பப்படவில்லை.",
- "sf_createclass_create": "உருவாக்கு",
- "sf_formstart_createoredit": "உருவாக்கு அல்லது தொகு",
- "formedit": "படிவத்துடன் தொகு",
- "sf_formedit_createtitle": "உருவாக்கு $1: $2",
- "sf_formedit_createtitlenotarget": "உருவாக்கு $1",
- "sf_formcreate": "படிவத்துடன் உருவாக்கு",
- "sf_viewform": "படிவத்தை காண்க",
- "sf_editsource": "மூலத்தைத் தொகு",
- "sf_formedit_edittitle": "தொகு $1: $2",
- "sf_formedit_remove": "நீக்குக",
- "sf_formedit_addanother": "மற்றொன்றை சேர்க்கவும்",
- "sf_formedit_none": "எதுவுமில்லை",
- "sf_formedit_saveandcontinueediting": "சேமித்து தொடரவும்",
- "sf_bad_email_error": "கண்டிப்பாக செல்லத்தக்க மின்னஞ்சல் முகவரி வடிவமைப்பைக் கொண்டிருக்க வேண்டும்",
- "sf_bad_number_error": "கண்டிப்பாக செல்லத்தக்க எண்ணாக இருக்க வேண்டும்",
- "sf_bad_date_error": "கண்டிப்பாக செல்லத்தக்க தேதியாக இருக்க வேண்டும்",
- "sf-preview-header": "படிவ முன்தோற்றம்",
- "sf_blank_namespace": "முதன்மையானது"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/te.json b/SemanticForms/i18n/te.json
deleted file mode 100644
index f0ebc2cd..00000000
--- a/SemanticForms/i18n/te.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Veeven"
- ]
- },
- "sf_createproperty_propname": "లక్షణపు పేరు:",
- "sf_createproperty_proptype": "రకం:",
- "templates": "మూసలు",
- "sf_templates_definescat": "వర్గాన్ని నిర్వచిస్తుంది: $1",
- "createtemplate": "మూసని సృష్టించండి",
- "sf_createtemplate_namelabel": "మూస పేరు:",
- "sf_createtemplate_fieldislist": "ఈ ఖాళీలో కామాలతో వేరుపరచి బహుళ విలువలని ఇవ్వవచ్చు",
- "sf_createtemplate_aggregation": "సంకలనం",
- "sf_createtemplate_aggregationlabel": "జాబితాకి శీర్షిక:",
- "sf_createtemplate_standardformat": "ప్రామాణిక",
- "sf_createtemplate_infoboxformat": "కుడివైపు సమాచారపెట్టె",
- "sf_createtemplate_deletefield": "తొలగించు",
- "sf_forminputs_mandatory": "తప్పనిసరి",
- "sf_createform_nameinput": "ఫారం పేరు",
- "sf_createform_template": "మూస:",
- "sf_createform_templatelabelinput": "మూస పేరు (ఐచ్చికం):",
- "sf_createform_inputtypedefault": "(అప్రమేయం)",
- "sf_createform_hidden": "దాచినది",
- "sf_createform_removetemplate": "మూసని తొలగించండి",
- "sf_createform_addtemplate": "మూసని చేర్చండి:",
- "sf_createform_atend": "చివరన",
- "sf_createform_add": "చేర్చు",
- "sf_createform_before": "మూసకి ముందు:",
- "createcategory": "వర్గాన్ని సృష్టించండి",
- "sf_createcategory_name": "వర్గపు పేరు:",
- "sf_createcategory_makesubcategory": "దీన్ని మరో వర్గానికి ఉపవర్గం చెయ్యి (ఐచ్ఛికం):",
- "sf_createclass_allowedvalues": "అనుమతించే విలువలు:",
- "sf_createclass_listofvalues": "విలువల యొక్క జాబితా",
- "formstart": "ఫారంతో పేజీని చేర్చండి",
- "sf_formstart_createoredit": "చేర్చు లేదా మార్చు",
- "sf_formedit_formwarning": "హెచ్చరిక: ఈ పేజీ <a href=\"$1\">ఇప్పటికే ఉంది</a>, కానీ దానిలో ఈ ఫారం లేదు.",
- "sf_formedit_remove": "తొలగించు",
- "sf_formedit_addanother": "మరోటి చేర్చండి",
- "sf_formedit_none": "ఏమీలేదు",
- "sf_blank_error": "ఖాళీగా ఉండకూడదు",
- "sf_bad_number_error": "ఖచ్చితంగా ఓ సంఖ్య అయివుండాలి",
- "sf_bad_date_error": "సరైన తేదీ అయివుండాలి",
- "uploadwindow": "ఎక్కింపు కిటికీ",
- "sf_deletionlog": "తొలగింపు చిట్టా",
- "sf_form_freetextlabel": "స్వేచ్ఛా పాఠ్యం",
- "sf_category_hasdefaultform": "ఈ వర్గం $1 అనే ఫారాన్ని వాడుతుంది.",
- "sf_category_desc": "ఇది $1 అనే వర్గం.",
- "sf_blank_namespace": "ప్రధాన"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tet.json b/SemanticForms/i18n/tet.json
deleted file mode 100644
index c5bb0b3d..00000000
--- a/SemanticForms/i18n/tet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "MF-Warburg"
- ]
- },
- "sf_createproperty_propname": "Naran:",
- "sf_createtemplate_deletefield": "Halakon",
- "sf_createform_add": "Tau tan",
- "sf_createcategory_name": "Naran kategoria nian:"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tg-cyrl.json b/SemanticForms/i18n/tg-cyrl.json
deleted file mode 100644
index 63d7d845..00000000
--- a/SemanticForms/i18n/tg-cyrl.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ibrahim"
- ]
- },
- "createproperty": "Вижагӣ бисозед",
- "sf_createproperty_allowedvalsinput": "Агар мехоҳед ин вуруди танҳои миқдорҳои мушаххаси миҷоз дошта бошад, феҳристи миқдорҳои миҷозро ворид кунед ва онҳоро бо вергул ҷудо созед (агар миқдор вергул дошта бошад, онро бо \"\\,\" иваз кунед):",
- "sf_createproperty_propname": "Ном:",
- "sf_createproperty_proptype": "Навъ:",
- "templates": "Шаблонҳо",
- "sf_templates_docu": "Шаблонҳои зер дар ин вики вуҷуд доранд.",
- "sf_templates_definescat": "таъйиди гурӯҳ: $1",
- "createtemplate": "Шаблон бисозед",
- "sf_createtemplate_namelabel": "Номи шаблон:",
- "sf_createtemplate_categorylabel": "Таъйиди гурӯҳ бо воситаи шаблон (ихтиёрӣ):",
- "sf_createtemplate_templatefields": "Вурудиҳои шаблон",
- "sf_createtemplate_aggregationlabel": "Унвон барои феҳрист:",
- "sf_createtemplate_standardformat": "Стандарт",
- "sf_createtemplate_deletefield": "Ҳафз",
- "sf_forms_docu": "Формҳои зерин дар вики вуҷуд доранд.",
- "createform": "Эҷоди як форм",
- "sf_createform_template": "Шаблон:",
- "sf_createform_inputtypedefault": "(пешфарз)",
- "sf_createform_add": "Илова кардан",
- "sf_createform_additembeforesave": "Шумо бояд ҳадди ақал як шаблон ба ин форм қабл аз захира кардани он илова кунед.",
- "sf_createcategory_name": "Ном:",
- "sf_formedit_remove": "Ҳазф",
- "sf_formedit_addanother": "Иловаи дигаре",
- "sf_formedit_none": "Ҳеҷ кадом",
- "sf_formerrors_header": "Хатоҳое дар вуруди форматон вуҷуд дорад; ба зер нигаред",
- "sf_blank_error": "наметавон холӣ бошад",
- "sf_property_isproperty": "Ин як вижагӣ аз навъи $1 аст.",
- "sf_template_docu": "Ин шаблони '$1' аст. Бояд бо қолаби зерин фарохонӣ шавад:",
- "sf_template_docufooter": "Барои мушоҳидаи матни шаблон саҳифаро вироиш кунед.",
- "sf_form_docu": "Ин форми '$1' аст. Барои илова кардани як саҳифае бо ин форм, дар зер номи саҳифаро ворид кунед; агар саҳифае бо ин ном вуҷуд дошта бошад, ба форми вироиши саҳифа ҳидоят мешавед.",
- "sf_form_freetextlabel": "Матни дилхоҳ",
- "sf_category_hasdefaultform": "Ин гурӯҳ аз форми $1 истифода мекунад.",
- "sf_category_desc": "Ин гурӯҳи $1 аст.",
- "sf_blank_namespace": "Аслӣ"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tg-latn.json b/SemanticForms/i18n/tg-latn.json
deleted file mode 100644
index 9e475556..00000000
--- a/SemanticForms/i18n/tg-latn.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Liangent"
- ]
- },
- "createproperty": "Viƶagī bisozed",
- "sf_createproperty_proptype": "Nav':",
- "templates": "Şablonho",
- "sf_templates_docu": "Şablonhoi zer dar in viki vuçud dorand.",
- "sf_templates_definescat": "ta'jidi gurūh: $1",
- "createtemplate": "Şablon bisozed",
- "sf_createtemplate_namelabel": "Nomi şablon:",
- "sf_createtemplate_categorylabel": "Ta'jidi gurūh bo vositai şablon (ixtijorī):",
- "sf_createtemplate_templatefields": "Vurudihoi şablon",
- "sf_createtemplate_aggregationlabel": "Unvon baroi fehrist:",
- "sf_createtemplate_standardformat": "Standart",
- "sf_createtemplate_deletefield": "Hafz",
- "sf_forms_docu": "Formhoi zerin dar viki vuçud dorand.",
- "createform": "Eçodi jak form",
- "sf_createform_template": "Şablon:",
- "sf_createform_inputtypedefault": "(peşfarz)",
- "sf_createform_add": "Ilova kardan",
- "sf_createform_additembeforesave": "Şumo bojad haddi aqal jak şablon ba in form qabl az zaxira kardani on ilova kuned.",
- "sf_formedit_remove": "Hazf",
- "sf_formedit_addanother": "Ilovai digare",
- "sf_formedit_none": "Heç kadom",
- "sf_formerrors_header": "Xatohoe dar vurudi formaton vuçud dorad; ba zer nigared",
- "sf_blank_error": "nametavon xolī boşad",
- "sf_property_isproperty": "In jak viƶagī az nav'i $1 ast.",
- "sf_template_docu": "In şabloni '$1' ast. Bojad bo qolabi zerin faroxonī şavad:",
- "sf_template_docufooter": "Baroi muşohidai matni şablon sahifaro viroiş kuned.",
- "sf_form_docu": "In formi '$1' ast. Baroi ilova kardani jak sahifae bo in form, dar zer nomi sahifaro vorid kuned; agar sahifae bo in nom vuçud doşta boşad, ba formi viroişi sahifa hidojat meşaved.",
- "sf_form_freetextlabel": "Matni dilxoh",
- "sf_category_hasdefaultform": "In gurūh az formi $1 istifoda mekunad.",
- "sf_category_desc": "In gurūhi $1 ast.",
- "sf_blank_namespace": "Aslī"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/th.json b/SemanticForms/i18n/th.json
deleted file mode 100644
index ef253353..00000000
--- a/SemanticForms/i18n/th.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Octahedron80",
- "Passawuth"
- ]
- },
- "sf_createtemplate_deletefield": "ลบ",
- "sf_createform_add": "เพิ่ม",
- "sf_formedit_none": "ไม่มี"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tk.json b/SemanticForms/i18n/tk.json
deleted file mode 100644
index f850066d..00000000
--- a/SemanticForms/i18n/tk.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Hanberke"
- ]
- },
- "sf_createtemplate_deletefield": "Öçür",
- "sf_formedit_remove": "Aýyr"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tl.json b/SemanticForms/i18n/tl.json
deleted file mode 100644
index f7ebc415..00000000
--- a/SemanticForms/i18n/tl.json
+++ /dev/null
@@ -1,180 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "AnakngAraw",
- "Sky Harbor"
- ]
- },
- "semanticforms-desc": "Mga pormularyo para sa paggawa ng mga dagdag at pagbabago sa dato hinggil sa kahulugan ng salita (semantiko)",
- "specialpages-group-sf_group": "Mga Pormularyo ng Semantiko (hinggil sa kahulugan ng salita)",
- "createproperty": "Lumikha ng pag-aari",
- "sf-createproperty-with-name": "Likhain ang ari-arian: $1",
- "sf_createproperty_linktoform": "Ang pag-aaring ito ay kakawing patungo sa mga pahinang gumagamit ng pormularyong:",
- "sf_createproperty_allowedvalsinput": "Kung nais mong pahintulutan ang pag-aaring ito na magkaroon lamang ng partikular na mga halaga, ipasok ang talaan ng pinahihintulutang mga halaga, na pinaghihiwalay-hiwalay ng mga kuwit (kapag naglalaman ang isang halaga ng isang kuwit, palitan ito ng \"\\,\"):",
- "sf_createproperty_propname": "Pangalan ng pag-aari:",
- "sf_createproperty_proptype": "Uri:",
- "templates": "Mga suleras",
- "sf_templates_docu": "Umiiral na sa wiki ang sumusunod na mga suleras.",
- "sf_templates_definescat": "nagbibigay ng kahulugan sa kaurian/kategorya: $1",
- "createtemplate": "Lumikha ng isang suleras",
- "sf-createtemplate-with-name": "Likhain ang suleras: $1",
- "sf_createtemplate_namelabel": "Pangalan ng suleras:",
- "sf_createtemplate_multipleinstance": "Ang suleras na ito ay maaaring isama nang maramihang ulit sa ibabaw ng pahina.",
- "sf_createtemplate_connectingproperty": "Pangalan ng ari-arian na pagkakabitan ng mga kahanayan ng suleras na ito papunta sa iba pang mga bahagi ng pahina:",
- "sf_createtemplate_categorylabel": "Kauriang binibigyang kahulugan ng suleras (maaaring wala nito):",
- "sf_createtemplate_templatefields": "Mga kahanayan ng suleras",
- "sf_createtemplate_fieldsdesc": "Hindi na ngayon kailangan ang mga pangalan ng kahanayan upang magkaroon ng mga kahanayan sa suleras na ito, payak na ipasok/ilagay lamang ang paksaan (indeks) ng bawat kahanayan (halimbawa na ang 1, 2, 3, atbp.) bilang pangalan, sa halip na isang tunay na pangalan.",
- "sf_createtemplate_fieldname": "Pangalan ng kahanayan:",
- "sf_createtemplate_displaylabel": "Ipinakikitang tatak:",
- "sf_createtemplate_semanticproperty": "Pag-aaring semantiko (hinggil sa kahulugan ng salita):",
- "sf_createtemplate_fieldislist": "Makapaghahawak ng isang talaan ng mga halaga ang kahanayang ito, pinaghihiwa-hiwalay ng mga kuwit",
- "sf_createtemplate_aggregation": "Pagkakakumpul-kumpol",
- "sf_createtemplate_aggregationdesc": "Upang maitala, sa anumang pahinang gumagamit ng ganitong suleras ang lahat ng mga pahinang may isang tiyak na pag-aari na tumuturo patungo sa pahinang iyon, tukuyin ang naaangkop na ari-ariang nasa ibaba:",
- "sf_createtemplate_aggregationlabel": "Pamagat ng talaan:",
- "sf_createtemplate_outputformat": "Anyo/pormat ng kalalabasan:",
- "sf_createtemplate_standardformat": "Talahanayan",
- "sf_createtemplate_infoboxformat": "Nasa gilid na kahon ng kabatiran",
- "sf_createtemplate_plainformat": "Payak na teksto",
- "sf_createtemplate_sectionsformat": "Mga seksyon",
- "sf_createtemplate_addfield": "Magdagdag ng kahanayan",
- "sf_createtemplate_deletefield": "Burahin",
- "forms": "Mga pormularyo",
- "sf_forms_docu": "Umiiral na sa wiking ito ang sumusunod na mga pormularyo.",
- "sf_forminputs_mandatory": "Kailangang gawin talaga",
- "sf_forminputs_restricted": "Mga tagapangasiwa lamang ang makapagbabago ng ipinasok na ito.",
- "sf_forminputs_class": "Ang katangiang \"klase\" ng HTML para sa lahok na ito",
- "sf_forminputs_default": "Ang likas na nakatakdang halaga para sa pagpapasok na ito",
- "sf_forminputs_preload": "Isang pahina ng wiki na ang mga nilalaman ay magiging likas na nakatakdang halaga ng pagpapasok na ito",
- "sf_forminputs_property": "Isang pag-aaring semantiko na kinatutugmaan ng hanay na ito",
- "sf_forminputs_size": "Ang sukat ng hanay ng tekstong ito, na mga nakapanitik",
- "sf_forminputs_maxlength": "Ang pinakamataas na pinahihintulutang haba ng teksto sa patlang na ito",
- "sf_forminputs_placeholder": "Ang tekstong pantulong na lumilitaw sa loob ng lahok magpahanggang sa lagitikin ito ng tagagamit",
- "sf_forminputs_uploadable": "Maglagay ng isang kawing na \"Ikarga ang talaksan\" na kasunod ng pagpapasok na ito",
- "sf_forminputs_defaultfilename": "Ang likas na nakatakdang pangalan ng talaksan para sa pagkakargang papaitaas ng mga talaksan",
- "sf_forminputs_rows": "Ang bilang ng mga hilerang ito para sa pagpapasok na ito",
- "sf_forminputs_cols": "Ang bilang ng mga haligi para sa pagpapasok na ito",
- "sf_forminputs_autogrow": "Itakda ang lahok na ito upang lumaki ang sukat kapag lumampas na ang teksto sa mga hangganan nito",
- "sf_forminputs_valuesfromproperty": "Isang ari-arian na ang mga halaga sa loob ng wiki ay dapat na maging pangkat ng mga halaga ng lahok na ito",
- "sf_forminputs_valuesfromcategory": "Isang kategorya na ang mga pahina ay dapat na maging pangkat ng mga halaga ng lahok na ito",
- "sf_forminputs_valuesfromnamespace": "Isang puwang ng pangalan na ang mga pahina ay dapat na maging pangkat ng mga halaga ng lahok na ito",
- "sf_forminputs_valuesfromconcept": "Isang pahina ng \"diwa\" ng Semantikong MediaWiki na ang mga pahina ay dapat na maging pangkat ng mga halaga ng lahok na ito",
- "sf_forminputs_valuesfromurl": "Isang datong may kayarian na humahawak ng URL na dapat na maging pangkat ng mga halaga ng lahok na ito",
- "sf_forminputs_values": "Ang pangkat ng mga halaga para sa lahok na ito, pinaghihiwalay-hiwalay ng mga kuwit",
- "sf_forminputs_list": "Markahan ang lahok na ito bilang naghahawak ng isang listahan ng mga halaga",
- "sf_forminputs_delimiter": "Ang panghangga na nasa pagitan ng mga halaga ng kahanayan, kung ang lahok na ito ay humahawak ng isang listahan ng mga ito",
- "sf_forminputs_remoteautocompletion": "Gamitin ang kusang pagkukumpleto",
- "sf_forminputs_existingvaluesonly": "Pahintulutan lamang ang mga halagang nasa loob na ng lista",
- "sf_forminputs_showonselect": "Mga elemento ng pahina na ipapakita lamang kung napili na ang partikular na mga halaga (halimbawa: \"value1=>div1;value2=>div2\")",
- "sf_forminputs_listboxsize": "Ang taas ng kahong listahan na ito, na nasa loob ng mga hilera",
- "sf_forminputs_includetimezone": "Magsali ng isang lahok para sa sona ng oras",
- "sf_forminputs_topcategory": "Ang magulang na kategorya ng pangkat na ito ng mga kategorya (kailangan)",
- "sf_forminputs_hideroot": "Itago ang magulang na kategorya",
- "sf_forminputs_depth": "Ang bilang ng mga kaantasan ng mga kategorya na paunang ipapakita",
- "sf_forminputs_height": "Ang taas ng lahok na ito, nasa mga piksel",
- "sf_forminputs_width": "Ang lapad ng lahok na ito, nasa mga piksel",
- "createform": "Lumikha ng isang pormularyo",
- "sf-createform-with-name": "Likhain ang pormularyo: $1",
- "sf_createform_nameinput": "Pangalan ng pormularyo",
- "sf_createform_nameinputdesc": "(ang pormularyo ay nakagawiang binibigyan ng kaparehong pangalan na katulad ng pangunahing suleras):",
- "sf_createform_template": "Suleras:",
- "sf_createform_templatelabelinput": "Tatak ng suleras (maaaring wala nito):",
- "sf_createform_allowmultiple": "Nagpapahintulot para sa maramihang (o walang) mga halimbawa/huwaran ng ganitong suleras sa loob ng nalikhang pahina",
- "sf_createform_field": "Kahanayan:",
- "sf_createform_fieldprop": "Binibigyang kahulugan ng kahanayang ito ang pag-aaring $1, ng uring $2.",
- "sf_createform_fieldproplist": "Binibigyang kahulugan ng kahanayang ito ang isang talaan ng mga langkap na mayroong pag-aaring $1, ng uring $2.",
- "sf_createform_fieldpropunknowntype": "Binibigyang kahulugan ng kahanayang ito ang pag-aaring $1, na hindi tinutukoy ang uri.",
- "sf_createform_inputtype": "Uri ng ipinapasok:",
- "sf_createform_inputtypedefault": "(likas na katakdaan)",
- "sf_createform_formlabel": "Tatak ng pormularyo:",
- "sf_createform_hidden": "Nakatago",
- "sf_createform_removetemplate": "Tanggalin ang suleras",
- "sf_createform_addtemplate": "Idagdag ang suleras:",
- "sf_createform_atend": "Sa hulihan",
- "sf_createform_add": "Idagdag/magdagdag",
- "sf_createform_choosefield": "Pumili ng kahanayang idaragdag",
- "sf_createform_before": "Bago dumating ang suleras:",
- "sf_createform_additembeforesave": "Dapat kang magdagdag ng kahit na isang suleras sa pormularyong ito bago mo ito masagip.",
- "createcategory": "Lumikha ng isang kaurian (kategorya)",
- "sf-createcategory-with-name": "Likhain ang kategorya: $1",
- "sf_createcategory_name": "Pangalan ng kategorya:",
- "sf_createcategory_defaultform": "Likas na nakatakdang pormularyo:",
- "sf_createcategory_makesubcategory": "Gawin itong isang kabahaging kaurian/kategorya ng iba pang kaurian (maaaring wala nito):",
- "createclass": "Gumawa ng isang klase",
- "sf_createclass_docu": "Ipasok dito ang lahat ng mga dato upang malikha ang lahat ng mga pag-aari, suleras, pormularyo at kategorya para sa isang nag-iisang klase. Para sa mas marami pang mga mapagpipilian, gamitin sa halip ang mga pahinang $1.",
- "sf_createclass_allowedvalues": "Pinahihintulutang mga halaga:",
- "sf_createclass_listofvalues": "Talaan ng mga halaga?",
- "sf_createclass_nameinput": "Pangalan ng pormularyo:",
- "sf_createclass_missingvalues": "Hindi pa nalagyan ang lahat ng kinakailangang mga lugar.",
- "sf_createclass_success": "Lilikhain ang mga pag-aari, suleras, pormularyo at kategorya.",
- "sf_createclass_create": "Likhain",
- "formstart": "Magdagdag ng pahinang may pormularyo",
- "sf_formstart_badform": "Kamalian: walang natagpuang pahina ng pormularyong nasa $1",
- "sf_formstart_badtitle": "Kamalian: ang \"$1\" ay isang hindi tanggap na pamagat para sa isang pahina.",
- "sf_formstart_docu": "Ipasok dito ang pangalan ng pahina, na babaguhin sa pamamagitan ng pormularyong '$1'.\nKung umiiral na ang pahinang ito, dadalhin ka patungo sa pormularyong para sa paggawa ng pagbabago sa pahinang iyon.\nAt kung hindi, dadalhin ka naman patungo sa pormularyo para sa pagdaragdag ng pahina.",
- "sf_formstart_noform_docu": "Dito ipasok/ilagay ang pangalan ng pahina, at piliin ang pormularyong gagamitin sa pagbago nito.\nKung umiiral na ang pahinang ito, dadalhin ka patungo sa pormularyo para sa paggawa ng pagbabago para sa pahinang iyan.\nKung hindi, dadalhin ka naman patungo sa pormularyo upang maidagdag ang pahina.",
- "sf_formstart_createoredit": "Likhain o baguhin",
- "formedit": "Baguhin na may pormularyo",
- "sf_formedit_createtitle": "Likhain ang $1: $2",
- "sf_formedit_createtitlenotarget": "Likhain ang $1",
- "sf_formedit_badurl": "Ito ang pahina para sa pagdaragdag na may pormularyo. Dapat mong tukuying kapwa ang isang pangalan ng pormularyo at isang pinupuntiryang pahinang nasa loob ng URL;\ndapat itong magmukhang katulad ng 'Special:FormEdit?form=<form name>&target=<target page>', o 'Special:FormEdit/<form name>/<target page>'.",
- "sf_formedit_altforms": "Sa halip, maaari mong idagdag ang pahinang ito na may isa sa sumusunod na mga pormularyo:",
- "sf_formedit_altformsonly": "Pumili lamang po mula sa isa sa sumusunod na mga pormularyo upang maidagdag ang pahinang ito:",
- "sf_formcreate": "Likhaing may pormularyo",
- "sf_viewform": "Tingnan ang pormularyo",
- "sf_editsource": "Baguhin ang batayan",
- "sf_formedit_edittitle": "Baguhin ang $1: $2",
- "sf_formedit_morethanoneform": "'''Babala:''' Mahigit sa isang pormularyong likas na itinakda ang binigyang kahulugan para sa pahinang ito.",
- "sf_formedit_formwarning": "Babala: <a href=\"$1\">Umiiral na</a> ang pahinang ito, ngunit hindi ito gumagamit ng ganitong pormularyo.",
- "sf_formedit_mismatchedbrackets": "Babala: Ang pahinang ito ay naglalaman ng mga puntal na kulot o braketang parisukat na hindi nakasara, kung kaya't ang pahina ay hindi mapapanghawakan nang tama ng pormularyo. Paki <a href=\"$1\">kumpunihin ang kamalian na nasa loob ng teksto ng pinagmulan</a> bago magpatuloy.",
- "sf_formedit_remove": "Tanggalin",
- "sf_formedit_addanother": "Magdagdag ng isa pa",
- "sf_formedit_none": "Wala",
- "sf_formedit_emptytitle": "Kamalian: Ang isiningit na mga resulta ng dato sa loob ng isang walang laman na pamagat ng pahina.",
- "sf_formedit_hookerror": "Kamalian: Isang dugtong ng MediaWiki ang pumigil sa pagbago ng pinupukol na pahina.",
- "sf_formedit_saveandcontinueediting": "Sagipin at magpatuloy",
- "sf_formedit_saveandcontinue_summary": "Sinagip na ginagamit ang pindutang \"$1\" na nasa loob ng pormularyo",
- "sf_formedit_tooltip_saveandcontinueediting": "Sagipin ang dato at magpatuloy sa pamamatnugot",
- "sf_autoedit_anoneditwarning": "Babala: Hindi ka nakalagda. Matatala ang iyong tirahan ng IP sa kasaysayan ng pagbabago ng pahinang ito.",
- "sf_autoedit_success": "Matagumpay na nabago ang [[$1]] na ginagamit ang pormularyong $2.",
- "sf_autoedit_notargetspecified": "Walang tinukoy na puntiryang pahina.",
- "sf_autoedit_noformfound": "Walang tinukoy na pormularyo.",
- "sf_autoedit_toomanyformsfound": "Mahigit sa isang pormularyo ang makukuha para sa pahina.",
- "sf_autoedit_readonly": "Kasalukuyang nakakandado ang kalipunan ng dato upang makapagbago. Dahilan: $1",
- "sf_autoedit_nosemanticform": "Hindi makuha ang pormularyong $2 para sa pahinang $1. Tingnan ang [[{{#special:FormEdit}}/$2/$1]] para sa mga detalye.",
- "sf_autoedit_summary": "Kusang pinatnugutan magmula sa pahinang $1.",
- "sf-autoedit-wait": "Hintay...",
- "runquery": "Patakbuhin ang tanong",
- "sf_runquery_badurl": "Kailangan kang tumukoy ng isang pangalan ng pormularyo sa loob ng URL;\ndapat magmukhang katulad ng 'Special:RunQuery/<form name>' ang URL.",
- "sf_runquery_title": "Patakbuhin ang tanong: $1",
- "sf_runquery_additionalquery": "Karagdagang tanong",
- "sf_formerrors_header": "Mayroong mga kamalian sa mga ipinasok mo sa pormularyo; tingnan sa ibaba",
- "sf_blank_error": "hindi maaaring walang laman",
- "sf_bad_url_error": "dapat na mayroong tamang anyo/pormat ng URL, na nagsisimula sa 'http'",
- "sf_bad_email_error": "dapat na mayroong isang tanggap na anyo/pormat ng adres ng e-liham",
- "sf_bad_number_error": "dapat na isang tanggap na bilang",
- "sf_bad_date_error": "dapat na isang tanggap na petsa",
- "uploadwindow": "Dungawan ng pagkarga",
- "sf_deletionlog": "Talaan ng pagbubura",
- "sf-preview-header": "Paunang patingin sa pormularyo",
- "sf-preview-note": "Ganito ang magiging anyo ng pormularyo habang ginagamit ito:",
- "sf-pageschemas-pagenameformula": "Pormula ng pangalan ng pahina:",
- "sf-pageschemas-createtitle": "Pamagat ng pormularyo para sa bagong mga pahina:",
- "sf-pageschemas-edittitle": "Pamagat ng pormularyo para sa umiiral na mga pahina:",
- "sf-pageschemas-inputtype": "Uri ng pagpapasok (iwanang walang laman upang maitakda sa likas na katakdaan):",
- "sf_property_isproperty": "Isa itong pag-aari ng uring $1.",
- "sf_property_linkstoform": "Kumakawing ito sa mga pahinang gumagamit ng pormularyong $1.",
- "sf_property_allowedvals": "Ang pinahihintulutang {{PLURAL:$1|halaga para sa pag-aaring ito ay|mga halaga para sa pag-aaring ito ay}}:",
- "sf_template_docu": "Ito ang suleras na '$1'.\nDapat na tawagin ito alinsunod sa sumusunod na anyo/pormat:",
- "sf_template_docufooter": "Baguhin ang pahina upang makita ang teksto ng suleras.",
- "sf_form_docu": "Ito ang pormularyong '$1'.\nUpang makalikha ng isang pahina na may ganitong pormularyo, ipasok ang pangalan ng pahina sa ibaba;\nkung umiiral na ang isang pahinang may ganyang pangalan, dadalhin ka patungo sa isang pormularyo upang mabago ang pahinyang iyan.",
- "sf_form_freetextlabel": "Malayang teksto",
- "sf_category_hasdefaultform": "Ang kaurian/kategoryang ito ay gumagamit ng pormularyong $1.",
- "sf_category_desc": "Ito ang kauriang $1.",
- "sf_blank_namespace": "Pangunahin",
- "right-viewedittab": "Tingnan ang panglaylay na \"Baguhin\" para sa mga pahinang mababago na ginagamitan ng pormularyo",
- "right-editrestrictedfields": "Baguhin ang mga lugar ng ipinagbabawal na pormularyo",
- "right-createclass": "Lumikha ng bagong mga klaseng semantiko",
- "action-createclass": "lumikha ng bagong mga klaseng semantiko",
- "action-editrestrictedfields": "baguhin ang mga kahanayan ng ipinagbabawal na pormularyo",
- "action-viewedittab": "tingnan ang panglaylay na \"Baguhin\" para sa mga pahinang mababago sa pamamagitan ng pormularyo"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tr.json b/SemanticForms/i18n/tr.json
deleted file mode 100644
index 36126d8b..00000000
--- a/SemanticForms/i18n/tr.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Incelemeelemani",
- "Joseph",
- "Karduelis",
- "Suelnur",
- "Vito Genovese"
- ]
- },
- "specialpages-group-sf_group": "Anlamsal Formlar",
- "createproperty": "Bir özellik oluştur",
- "sf_createproperty_propname": "Özellik adı:",
- "sf_createproperty_proptype": "Tip:",
- "templates": "Şablonlar",
- "createtemplate": "Şablon oluştur",
- "sf_createtemplate_namelabel": "Şablon adı:",
- "sf_createtemplate_templatefields": "Şablon alanları",
- "sf_createtemplate_fieldname": "Alan adı:",
- "sf_createtemplate_displaylabel": "Etiketi görüntüle:",
- "sf_createtemplate_semanticproperty": "Anlamsal özellik:",
- "sf_createtemplate_aggregationlabel": "Liste için başlık:",
- "sf_createtemplate_outputformat": "Çıktı biçimi:",
- "sf_createtemplate_standardformat": "Standart",
- "sf_createtemplate_addfield": "Alan ekle",
- "sf_createtemplate_deletefield": "Sil",
- "forms": "Formlar",
- "sf_forminputs_mandatory": "Zorunlu",
- "createform": "Form oluştur",
- "sf_createform_nameinput": "Form adı",
- "sf_createform_template": "Şablon:",
- "sf_createform_templatelabelinput": "Şablon etiketi (isteğe bağlı):",
- "sf_createform_field": "Alan:",
- "sf_createform_inputtypedefault": "(var sayılan)",
- "sf_createform_formlabel": "Form etiketi:",
- "sf_createform_hidden": "Gizli",
- "sf_createform_removetemplate": "Şablon kaldır",
- "sf_createform_addtemplate": "Şablon ekle:",
- "sf_createform_add": "Ekle",
- "sf_createform_choosefield": "Eklenecek bir alan seçin",
- "sf_createform_before": "Şablondan önce:",
- "createcategory": "Bir kategori oluştur",
- "sf_createcategory_name": "Kategori ismi:",
- "sf_createcategory_defaultform": "Var sayılan form:",
- "sf_createclass_allowedvalues": "İzin verilen değerler",
- "sf_createclass_listofvalues": "Değerlerin listesi",
- "sf_createclass_create": "Oluştur",
- "formstart": "Form ile sayfa ekle",
- "sf_formstart_createoredit": "Oluştur veya düzelt",
- "sf_viewform": "Formu gör",
- "sf_editsource": "Kaynak düzelt",
- "sf_formedit_remove": "Kaldır",
- "sf_formedit_none": "Hiçbiri",
- "sf_runquery_additionalquery": "Ek sorgu",
- "sf_blank_error": "boş olamaz",
- "sf_bad_number_error": "geçerli bir sayı olmalı",
- "sf_bad_date_error": "geçerli bir tarih olmalı",
- "sf_form_freetextlabel": "Serbest metin",
- "sf_category_desc": "Bu $1 kategorisidir.",
- "sf_blank_namespace": "Ana",
- "right-editrestrictedfields": "Kısıtlanmış form alanlarını değiştirir"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tt-cyrl.json b/SemanticForms/i18n/tt-cyrl.json
deleted file mode 100644
index d6be766e..00000000
--- a/SemanticForms/i18n/tt-cyrl.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ерней"
- ]
- },
- "sf_createform_inputtypedefault": "(килешү буенча)"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/tzm.json b/SemanticForms/i18n/tzm.json
deleted file mode 100644
index feb6485c..00000000
--- a/SemanticForms/i18n/tzm.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Tifinaghes"
- ]
- },
- "sf_createproperty_proptype": "ⴰⵏⴰⵡ:",
- "sf_createform_atend": "ⴳ ⵓⵏⴳⴳⴰⵔⵓ"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/uk.json b/SemanticForms/i18n/uk.json
deleted file mode 100644
index 40427ae4..00000000
--- a/SemanticForms/i18n/uk.json
+++ /dev/null
@@ -1,207 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "AS",
- "Ahonc",
- "Andriykopanytsia",
- "Base",
- "Microcell",
- "Olvin",
- "Prima klasy4na",
- "Steve.rusyn",
- "SteveR",
- "Тест"
- ]
- },
- "semanticforms-desc": "Форми для додавання і редагування семантичних даних",
- "specialpages-group-sf_group": "Семантичні форми",
- "createproperty": "Створити властивість",
- "sf-createproperty-with-name": "Створити властивість: $1",
- "sf_createproperty_linktoform": "Ця властивість містить посилання на сторінки, які використовують форму:",
- "sf_createproperty_allowedvalsinput": "Якщо Ви хочете, щоб дана властивість могла мітити тільки певні значення, введіть список дозволених значень, розділених комами (якщо значення містить кому, замініть її на «\\,»):",
- "sf_createproperty_propname": "Назва властивості:",
- "sf_createproperty_proptype": "Тип:",
- "templates": "Шаблони",
- "sf_templates_docu": "Наступні шаблони існують у вікі.",
- "sf_templates_definescat": "визначає категорію: $1",
- "createtemplate": "Створити шаблон",
- "sf-createtemplate-with-name": "Створити шаблон: $1",
- "sf_createtemplate_namelabel": "Назва шаблона:",
- "sf_createtemplate_multipleinstance": "Цей шаблон може бути включено декілька разів на сторінку.",
- "sf_createtemplate_connectingproperty": "Назва властивості для підключення полів цього шаблону на решту сторінки:",
- "sf_createtemplate_categorylabel": "Категорія, що визначається шаблоном (необов'язково):",
- "sf_createtemplate_templatefields": "Поля шаблону",
- "sf_createtemplate_fieldsdesc": "Для вказівки полів шаблону не потрібно вказувати їх імена, просто введіть індекс кожного поля (наприклад, 1, 2, 3 і т. д.) замість фактичного імені.",
- "sf_createtemplate_fieldname": "Назва поля:",
- "sf_createtemplate_displaylabel": "Показувати підпис:",
- "sf_createtemplate_semanticproperty": "Семантична властивість:",
- "sf_createtemplate_fieldislist": "Це поле може містити список розділених комами значень",
- "sf_createtemplate_aggregation": "Агрегація",
- "sf_createtemplate_aggregationdesc": "Щоб вивести на будь-яку сторінку, яка використовує цей шаблон, всі сторінки, в яких задана властивість вказує на цю сторінку, вкажіть відповідну властивість нижче:",
- "sf_createtemplate_aggregationlabel": "Заголовок списку:",
- "sf_createtemplate_outputformat": "Формат виводу:",
- "sf_createtemplate_standardformat": "Таблиця",
- "sf_createtemplate_infoboxformat": "Бокова картка",
- "sf_createtemplate_plainformat": "Простий текст",
- "sf_createtemplate_sectionsformat": "Розділи",
- "sf_createtemplate_addfield": "Додати поле",
- "sf_createtemplate_deletefield": "Вилучити",
- "forms": "Форми",
- "sf_forms_docu": "Такі форми існують у вікі.",
- "sf_forminputs_mandatory": "Значення потрібно ввести для цього поля",
- "sf_forminputs_restricted": "Тільки адміністратори можуть редагувати це поле",
- "sf_forminputs_class": "HTML-атрибут «class» для цього поля вводу",
- "sf_forminputs_default": "Типове значення для цього поля",
- "sf_forminputs_preload": "Вікі-сторінка, вміст якої буде використано як типове значення для цього поля",
- "sf_forminputs_property": "Семантична властивість, яке відповідає цьому полю",
- "sf_forminputs_size": "Розмір текстового поля в символах",
- "sf_forminputs_maxlength": "Гранична довжина тексту в цьому полі",
- "sf_forminputs_placeholder": "Текст довідки, який з'являється в полі вводу до тих пір, поки користувач натискає на нього",
- "sf_forminputs_uploadable": "Додати посилання «{{int:upload}}» поряд з цим полем",
- "sf_forminputs_defaultfilename": "Типове ім'я файлу для вивантажених файлів",
- "sf_forminputs_rows": "Кількість рядків для цього вводу",
- "sf_forminputs_cols": "Кількість стовпців для цього вводу",
- "sf_forminputs_autogrow": "Дозволяє полю збільшувати свій розмір у відповідності з кількістю тексту",
- "sf_forminputs_valuesfromproperty": "Властивість, значення якої використовується для підстановки у це поле введення",
- "sf_forminputs_valuesfromcategory": "Категорія, назви сторінок якої використовуються для підстановки у це поле введення",
- "sf_forminputs_valuesfromnamespace": "Простір імен, назви сторінок якого використовуються для підстановки у це поле введення",
- "sf_forminputs_valuesfromconcept": "Сторінка „поняття“ Семантичної Медіавікі, набір значень якої використовується для підстановки у це поле введення",
- "sf_forminputs_valuesfromurl": "URL-адреса сховища структурованих даних, які використовуються для підстановки у це поле введення",
- "sf_forminputs_values": "Набір значень у це поле введення, розділених комами",
- "sf_forminputs_list": "Позначити це поле, що містить список значень",
- "sf_forminputs_delimiter": "Роздільник між значеннями, якщо це поле містить список значень",
- "sf_forminputs_remoteautocompletion": "Використовувати зовнішнє автозаповнення",
- "sf_forminputs_existingvaluesonly": "Дозволити тільки значення із списку",
- "sf_forminputs_showonselect": "Елементи сторінки, які відображаються тільки в тому випадку, якщо обрані певні значення (приклад: \"value1=>div1;value2=>div2)",
- "sf_forminputs_listboxsize": "Висота у цьому списку, у рядках",
- "sf_forminputs_includetimezone": "Відображати поле для введення часового поясу",
- "sf_forminputs_topcategory": "Батьківська категорія для цього набору категорій (обов'язково)",
- "sf_forminputs_hideroot": "Приховати батьківську категорію",
- "sf_forminputs_depth": "Число рівнів категорій для показу початково",
- "sf_forminputs_height": "Висота цього вводу, у піселях",
- "sf_forminputs_width": "Ширина цього вводу, у пікселях",
- "createform": "Створити форму",
- "sf-createform-with-name": "Створити форму: $1",
- "sf_createform_nameinput": "Назва форми",
- "sf_createform_nameinputdesc": "(форму зазвичай називають так само, як і її головний шаблон):",
- "sf_createform_template": "Шаблон:",
- "sf_createform_templatelabelinput": "Позначка шаблону (необов'язково):",
- "sf_createform_allowmultiple": "Дозволити декілька (або нуль) включень цього шаблону на створеній сторінці",
- "sf_createform_field": "Поле:",
- "sf_createform_fieldprop": "Це поле визначає властивість $1 типу $2.",
- "sf_createform_fieldproplist": "Це поле визначає список елементів, що мають властивість $1 типу $2.",
- "sf_createform_fieldpropunknowntype": "Це поле визначає властивість $1 невказаного типу.",
- "sf_createform_inputtype": "Тип вводу:",
- "sf_createform_inputtypedefault": "(стандартно)",
- "sf_createform_formlabel": "Ярлик форми:",
- "sf_createform_hidden": "Прихована",
- "sf_createform_removetemplate": "Вилучити шаблон",
- "sf_createform_addtemplate": "Додати шаблон:",
- "sf_createform_atend": "У кінці",
- "sf_createform_add": "Додати",
- "sf_createform_choosefield": "Оберіть поле для додавання",
- "sf_createform_pagesection": "Розділ сторінки:",
- "sf_createform_addsection": "Додати розділ",
- "sf_createform_removesection": "Видалити розділ",
- "sf_createform_before": "Перед шаблоном:",
- "sf_createform_addelements": "Додати елементи",
- "sf_createform_hiddensection": "Це поле є прихований у формі",
- "sf_createform_sectionlevel": "Рівень розділу:",
- "sf_createform_sectionname": "Назва розділу",
- "sf_createform_additembeforesave": "Ви повинні додати принаймні один шаблон або розділ сторінки в цій формі, щоб ви могли зберегти його.",
- "sf_createform_otherparameters": "Інші параметри",
- "createcategory": "Створити категорію",
- "sf-createcategory-with-name": "Створити категорію: $1",
- "sf_createcategory_name": "Назва категорії:",
- "sf_createcategory_defaultform": "Форма за умовчанням:",
- "sf_createcategory_makesubcategory": "Зробити це підкатегорією іншої категорії (необов'язково):",
- "createclass": "Створити клас",
- "sf_createclass_docu": "Введіть тут усі дані для створення властивостей, шаблону, форми і категорії для одного класу. Для більшого числа опцій, використовуйте сторінку $1.",
- "sf_createclass_allowedvalues": "Дозволені значення:",
- "sf_createclass_listofvalues": "Список значень?",
- "sf_createclass_nameinput": "Назва форми:",
- "sf_createclass_missingvalues": "Не всі необхідні поля було заповнено.",
- "sf_createclass_success": "Властивості, шаблони, форми і категорії буде створено.",
- "sf_createclass_create": "Створити",
- "formstart": "Додати сторінку з формою",
- "sf_formstart_badform": "Помилка: На сторінці «$1» не знайдено форм.",
- "sf_formstart_badtitle": "Помилка: «$1» — недопустима назва сторінки.",
- "sf_formstart_docu": "Введіть назву сторінки, яку потрібно редагувати з допомогою форми «$1». Якщо сторінка вже існує, ви будете спрямовані на форму редагування сторінки, інакше ви будете спрямовані на форму додавання сторінки.",
- "sf_formstart_noform_docu": "Введіть назву сторінки та виберіть форму, з допомогою якої їй потрібно редагувати. Якщо ця сторінка вже існує, ви будите спрямовані на форму редагування сторінки, інакше ви будите спрямовані на форму додавання сторінки.",
- "sf_formstart_createoredit": "Створити або редагувати",
- "formedit": "Редагувати з формою",
- "sf_formedit_createtitle": "Створити $1: $2",
- "sf_formedit_createtitlenotarget": "Створити $1",
- "sf_formedit_badurl": "Це сторінка редагування з допомогою форми. Необхідно вказати як ім'я форми, так і цільову сторінку в URL;\nце повинно виглядати як \"Special:FormEdit?form=<form name>&target=<target page>\", або \"Special:FormEdit/<form name>/<target page>\".",
- "sf_formedit_altforms": "Ви можете замість цього додати цю сторінку за допомогою однієї із наступних форм:",
- "sf_formedit_altformsonly": "Будь ласка, оберіть одну із наступних форм для додання цієї сторінки:",
- "sf_formcreate": "Створити із формою",
- "sf_viewform": "Переглянути форму",
- "sf_editsource": "Редагувати вихідний код",
- "sf_formedit_edittitle": "Редагування $1: $2",
- "sf_formedit_morethanoneform": "'''Увага:''' Визначено більше ніж одну форму за замовчуванням для цієї сторінки.",
- "sf_formedit_formwarning": "Попередження: Ця сторінка <a href=\"$1\">вже існує</a>, але не використовує цю форму.",
- "sf_formedit_mismatchedbrackets": "Попередження: ця сторінка містить фігурні або квадратні дужки, які не закриті, тому сторінка не буде правильно опрацьована формою. Будь ласка <a href=\"$1\"> виправте помилки у вихідному тексті</a> перш ніж продовжити.",
- "sf_formedit_remove": "Видалити цей екземпляр",
- "sf_formedit_addanotherabove": "Додати ще один зразок над ним",
- "sf_formedit_addanother": "Додати іншу",
- "sf_formedit_none": "Нічого",
- "sf_formedit_emptytitle": "Помилка: вставлені дані опинилися у порожній назві сторінки.",
- "sf_formedit_hookerror": "Помилка: Розширення Медіавікі запобігло зміні цільової сторінки.",
- "sf_formedit_saveandcontinueediting": "Зберегти і продовжити",
- "sf_formedit_saveandcontinue_summary": "Збережено використовуючи кнопку «$1» у формі",
- "sf_formedit_tooltip_saveandcontinueediting": "Зберегти дані і продовжити редагування",
- "sf_autoedit_anoneditwarning": "Увага: Ви не увійшли до системи. Вашу IP-адресу буде записано у історії редагування цієї сторінки.",
- "sf_autoedit_success": "Успішно змінено [[$1]] використовуючи форму $2.",
- "sf_autoedit_fail": "Не вдалося змінити [[$1]].",
- "sf_autoedit_notargetspecified": "Не вказано цільової сторінки.",
- "sf_autoedit_invalidtargetspecified": "Вказано неправильну цільову сторінку '''$1'''.",
- "sf_autoedit_invalidform": "'''$1''' не є правильною формою.",
- "sf_autoedit_redirectlimitexeeded": "Перевищено максимальне число перенаправлень для форми $1.",
- "sf_autoedit_invalidredirecttarget": "$1 недопустима ціль перенаправлення для форми $2.",
- "sf_autoedit_invalidpreloadspecified": "Вказана попередньо завантажена сторінка $1 невірна.",
- "sf_autoedit_redlinkexists": "$1 вже існує.",
- "sf_autoedit_noformfound": "Не вказано жодної форми.",
- "sf_autoedit_toomanyformsfound": "Для сторінки доступно більше ніж 1 форма.",
- "sf_autoedit_readonly": "Наразі базу даних захищено від змін. Причина: $1",
- "sf_autoedit_nosemanticform": "Не вдалося отримати форму $2 для сторінки $1. Див. [[{{#special:FormEdit}}/$2/$1]] за подробицями.",
- "sf_autoedit_summary": "Автоматично відредаговано на сторінці $1.",
- "sf-autoedit-wait": "Зачекайте...",
- "runquery": "Запустити запит",
- "sf_runquery_badurl": "Ви повинні визначити ім'я форми в URL;\nURL повинен виглядати так: „Special:RunQuery/<form name>“.",
- "sf_runquery_title": "Виконати запит:$1",
- "sf_runquery_additionalquery": "Додатковий запит",
- "sf_formerrors_header": "Були виявлені помилки у вашій формі вводу, див. нижче",
- "sf_too_few_instances_error": "Там повинно бути принаймні {{PLURAL:$1|один примірник| $1 примірники|$1 примірників}} цього шаблону.",
- "sf_too_many_instances_error": "Там повинно бути не більше {{PLURAL:$1|одного примірника| $1 примірників}} цього шаблону.",
- "sf_blank_error": "не може бути порожнім",
- "sf_bad_url_error": "повинне мати правильний формат URL, розпочинатись із «http»",
- "sf_bad_email_error": "повинне мати правильний формат адреси електронної пошти",
- "sf_bad_number_error": "повинно бути числом",
- "sf_bad_date_error": "повинно бути датою",
- "uploadwindow": "Вікно завантаження",
- "sf_deletionlog": "Журнал вилучень",
- "sf-preview-header": "Попередній перегляд форми",
- "sf-preview-note": "Ось так форма виглядатиме, коли вона використовується:",
- "sf-pageschemas-pagenameformula": "Формула назви сторінки:",
- "sf-pageschemas-createtitle": "Назва форми для нових сторінок:",
- "sf-pageschemas-edittitle": "Назва форми для існуючих сторінок:",
- "sf-pageschemas-inputtype": "Тип вводу (залиште порожнім для встановлення за замовчуванням):",
- "sf-pageschemas-otherparams": "Введіть імена параметрів і їх значення як ключ=значення, відокремлюючи комами кілька значень (якщо значення містить кому, то замініть його на \"\\,\"). Наприклад:$1",
- "sf_property_isproperty": "Це властивість типу $1.",
- "sf_property_linkstoform": "Посилання на сторінки, що використовують форму $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Дозволене значення для цієї властивості|Дозволені значення для цієї властивості}}:",
- "sf_template_docu": "Це шаблон «$1». Він повинен викликатися наступним чином:",
- "sf_template_docufooter": "Відредагуйте сторінку, щоб побачити текст шаблону.",
- "sf_form_docu": "Це форма «$1».\nЩоб створити сторінку з допомогою цієї форми введіть нижче назву сторінки;\nякщо сторінка з таким ім'ям вже існує, ви будете направлені на форму редагування цієї сторінки.",
- "sf_form_freetextlabel": "Довільний текст",
- "sf_category_hasdefaultform": "Ця категорія використовує фому $1.",
- "sf_category_desc": "Це категорія $1.",
- "sf_blank_namespace": "Головне",
- "right-viewedittab": "Вкладка «{{int:edit}}» для сторінок, які можна редагувати через форму",
- "right-editrestrictedfields": "Редагування захищених полів форми",
- "right-createclass": "Створювати нові семантичні класи",
- "action-createclass": "створення нових семантичних класів",
- "action-editrestrictedfields": "редагування захищених полів форми",
- "action-viewedittab": "доступ до вкладки «{{int:edit}}» для сторінок, редагованих за допомогою форми"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/ur.json b/SemanticForms/i18n/ur.json
deleted file mode 100644
index 06cc1fa7..00000000
--- a/SemanticForms/i18n/ur.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "පසිඳු කාවින්ද"
- ]
- },
- "sf_createproperty_proptype": "قسم:",
- "templates": "سانچے",
- "createtemplate": "ایک سانچے تخلیق کریں",
- "sf_createtemplate_namelabel": "سانچے کے نام:",
- "sf_createtemplate_fieldname": "میدان کا نام:",
- "sf_createtemplate_displaylabel": "ڈسپلے لیبل:",
- "sf_createtemplate_standardformat": "ٹیبل",
- "sf_createtemplate_sectionsformat": "حصوں",
- "sf_createtemplate_deletefield": "حذف کریں",
- "forms": "فارم",
- "createform": "ایک شکل تخلیق کریں",
- "sf_createform_nameinput": "فارم کے نام",
- "sf_createform_template": "سانچہ:",
- "sf_createform_field": "میدان:",
- "sf_createform_inputtype": "ان پٹ کی قسم:",
- "sf_createform_inputtypedefault": "(طے شدہ)",
- "sf_createform_hidden": "پوشیدہ",
- "sf_createform_removetemplate": "سانچے کو حذف کریں",
- "sf_createform_addtemplate": "سانچے شامل کریں:",
- "sf_createform_add": "شامل کریں",
- "sf_createform_before": "سانچہ: سے پہلے",
- "createcategory": "ایک قسم کی تخلیق",
- "sf_createcategory_name": "شعبے کا نام:",
- "sf_createcategory_defaultform": "پہلے سے طے شدہ فارم:",
- "createclass": "ایک کلاس کی تخلیق",
- "sf_createclass_nameinput": "فارم کے نام:",
- "sf_createclass_create": "تخلیق کریں"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/uz.json b/SemanticForms/i18n/uz.json
deleted file mode 100644
index 7c3c7c44..00000000
--- a/SemanticForms/i18n/uz.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "CoderSI",
- "Sociologist"
- ]
- },
- "createproperty": "Xossa yaratish",
- "sf-createproperty-with-name": "Xossa yaratish: $1",
- "sf_createproperty_propname": "Xossa nomi:",
- "sf_createproperty_proptype": "Turi:",
- "templates": "Andozalar",
- "sf_templates_docu": "Quyidagi andozalar vikida bor.",
- "sf-createtemplate-with-name": "Andoza yaratish: $1",
- "sf_createtemplate_namelabel": "Andoza nomi:",
- "sf_createtemplate_displaylabel": "Koʻrsatiladigan yozuv:",
- "sf_createtemplate_semanticproperty": "Semantik xossa",
- "sf_createtemplate_standardformat": "Jadval",
- "forms": "Shakllar",
- "createform": "Shakl yaratish",
- "sf_createform_add": "Qoʻshish",
- "sf_createclass_nameinput": "Shakl nomi",
- "sf_createclass_create": "Yaratish",
- "formstart": "Shaklni boshlash",
- "sf_formstart_createoredit": "Yaratish yoki tahrirlash",
- "formedit": "Shakl bilan tahrirlash",
- "sf_formedit_createtitle": "Yaratish $1: $2",
- "sf_formedit_createtitlenotarget": "\"$1\"ni yaratish",
- "sf_formcreate": "Shakl bilan yaratish",
- "sf_viewform": "Shaklni koʻrish",
- "sf_editsource": "Manbasini tahrirlash",
- "sf_formedit_edittitle": "Tahrirlash $1: $2"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/vep.json b/SemanticForms/i18n/vep.json
deleted file mode 100644
index 24bcac62..00000000
--- a/SemanticForms/i18n/vep.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Игорь Бродский"
- ]
- },
- "sf_createproperty_propname": "Ičendan nimi:",
- "sf_createproperty_proptype": "Tip:",
- "templates": "Šablonad",
- "sf_templates_docu": "Wikiš om ningoižid šablonoid:",
- "sf_templates_definescat": "märhapaneb kategorijan: $1",
- "createtemplate": "Säta šablon",
- "sf_createtemplate_namelabel": "Šablonan nimi:",
- "sf_createtemplate_categorylabel": "Kategorii, kudamban märhapaneb šablon (opcionaližikš):",
- "sf_createtemplate_templatefields": "Šablonan pöudod:",
- "sf_createtemplate_outputformat": "Lähtmižformat:",
- "sf_createtemplate_standardformat": "Standartine",
- "sf_createtemplate_addfield": "Läžata pöud",
- "sf_createtemplate_deletefield": "Čuta poiš",
- "forms": "Formad",
- "createform": "Säta form",
- "sf_createform_nameinput": "Forman nimi",
- "sf_createform_template": "Šablon:",
- "sf_createform_field": "Pöud:",
- "sf_createform_hidden": "Peittud",
- "sf_createform_add": "Ližata",
- "createcategory": "Säta kategorii",
- "sf_createcategory_name": "Kategorijan nimi:",
- "sf_createcategory_defaultform": "Form augotižjärgendusen mödhe:",
- "sf_formstart_createoredit": "Ližada vai redaktirui",
- "sf_editsource": "Redaktiruida purde",
- "sf_formedit_remove": "Čuta poiš",
- "sf_formedit_addanother": "Ližata völ",
- "sf_form_freetextlabel": "Joudai tekst"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/vi.json b/SemanticForms/i18n/vi.json
deleted file mode 100644
index 6fd57328..00000000
--- a/SemanticForms/i18n/vi.json
+++ /dev/null
@@ -1,119 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Minh Nguyen",
- "Vinhtantran"
- ]
- },
- "semanticforms-desc": "Mẫu để thêm và sửa đổi dữ liệu ngữ nghĩa",
- "specialpages-group-sf_group": "Mẫu Ngữ Nghĩa",
- "createproperty": "Tạo một thuộc tính",
- "sf_createproperty_linktoform": "Thuộc tính này sẽ liên kết đến các trang sử dụng mẫu:",
- "sf_createproperty_allowedvalsinput": "Nếu bạn muốn thuộc tính này chỉ cho phép một số giá trị nào đó, hãy nhập vào danh sách các giá trị cho phép, phân cách nhau bằng dấu phẩy (nếu một giá trị có chứa dấu phẩy, hãy thay nó bằng “\\,”):",
- "sf_createproperty_propname": "Tên thuộc tính:",
- "sf_createproperty_proptype": "Loại:",
- "templates": "Bản mẫu",
- "sf_templates_docu": "Các bản mẫu sau có trong wiki.",
- "sf_templates_definescat": "định nghĩa thể loại: $1",
- "createtemplate": "Tạo bản mẫu",
- "sf_createtemplate_namelabel": "Tên bản mẫu:",
- "sf_createtemplate_categorylabel": "Thể loại do bản mẫu định nghĩa (tùy chọn):",
- "sf_createtemplate_templatefields": "Các trường trong bản mẫu",
- "sf_createtemplate_fieldsdesc": "Để dùng các trường không cần tên trong bản mẫu, chỉ cần gõ vào thứ tự mỗi trường (như 1, 2, 3, v.v.) thay vì tên thật sự.",
- "sf_createtemplate_fieldname": "Tên trường:",
- "sf_createtemplate_displaylabel": "Hiển thị nhãn:",
- "sf_createtemplate_semanticproperty": "Thuộc tính ngữ nghĩa:",
- "sf_createtemplate_fieldislist": "Trường này có thể chứa nhiều giá trị, cách nhau bằng dấu phẩy",
- "sf_createtemplate_aggregation": "Tập hợp",
- "sf_createtemplate_aggregationdesc": "Để liệt kê tất cả các bài viết có thuộc tính nào đó tại trang dùng bản mẫu này, hãy chỉ định thuộc tính thích hợp ở dưới:",
- "sf_createtemplate_aggregationlabel": "Đề mục cho danh sách:",
- "sf_createtemplate_outputformat": "Định dạng xuất:",
- "sf_createtemplate_standardformat": "Bảng",
- "sf_createtemplate_infoboxformat": "Hộp thông tin bên",
- "sf_createtemplate_plainformat": "Văn bản thuần",
- "sf_createtemplate_addfield": "Thêm trường",
- "sf_createtemplate_deletefield": "Xóa",
- "forms": "Các biểu mẫu",
- "sf_forms_docu": "Các mẫu dưới đây có trong wiki.",
- "sf_forminputs_mandatory": "Bắt buộc",
- "sf_forminputs_restricted": "Chỉ có bảo quản viên mới được thay đổi đầu vào này",
- "createform": "Tạo ra biểu mẫu",
- "sf_createform_nameinput": "Tên biểu mẫu",
- "sf_createform_nameinputdesc": "(quy ước là đặt tên biểu mẫu theo bản mẫu chính mà nó điền):",
- "sf_createform_template": "Bản mẫu:",
- "sf_createform_templatelabelinput": "Nhãn bản mẫu (tùy chọn):",
- "sf_createform_allowmultiple": "Cho phép nhúng bản mẫu này nhiều lần (hoặc không nhúng) vào trang được tạo",
- "sf_createform_field": "Trường:",
- "sf_createform_fieldprop": "Trường này định nghĩa tính chất $1, thuộc kiểu $2.",
- "sf_createform_fieldproplist": "Trường này định nghĩa danh sách các phần tử có tính chất $1, thuộc kiểu $2.",
- "sf_createform_fieldpropunknowntype": "Trường này định nghĩa tính chất $1, thuộc kiểu không xác định.",
- "sf_createform_inputtype": "Kiểu nhập vào:",
- "sf_createform_inputtypedefault": "(mặc định)",
- "sf_createform_formlabel": "Nhãn cho mẫu:",
- "sf_createform_hidden": "Ẩn",
- "sf_createform_removetemplate": "Xóa bỏ bản mẫu",
- "sf_createform_addtemplate": "Thêm bản mẫu:",
- "sf_createform_atend": "Vào cuối",
- "sf_createform_add": "Thêm",
- "sf_createform_choosefield": "Chọn một trường để thêm vào",
- "sf_createform_before": "Trước bản mẫu:",
- "sf_createform_additembeforesave": "Bạn phải thêm vào ít nhất một bản mẫu vào mẫu trước khi bạn có lưu nó lại.",
- "createcategory": "Tạo thể loại",
- "sf_createcategory_name": "Tên thể loại:",
- "sf_createcategory_defaultform": "Biểu mẫu mặc định:",
- "sf_createcategory_makesubcategory": "Chuyển cái này thành thể loại con của một thể loại khác (tùy chọn):",
- "createclass": "Tạo lớp",
- "sf_createclass_docu": "Nhập tất cả dữ liệu tại đây để khởi tạo thuộc tính, bản mẫu, mẫu đơn và thể loại dành cho một lớp đơn. Để có thêm tùy chọn, hãy dùng trang $1.",
- "sf_createclass_allowedvalues": "Giá trị cho phép:",
- "sf_createclass_listofvalues": "Danh sách giá trị?",
- "sf_createclass_nameinput": "Tên biểu mẫu:",
- "sf_createclass_missingvalues": "Các ô bắt buộc chưa được điền đầy đủ.",
- "sf_createclass_success": "Thuộc tính, bản mẫu, mẫu đơn và thể loại sẽ được khởi tạo.",
- "sf_createclass_create": "Tạo",
- "formstart": "Dùng mẫu để thêm trang",
- "sf_formstart_badform": "Lỗi: không có trang mẫu nào tìm thấy tại $1",
- "sf_formstart_docu": "Nhập vào tên trang ở đây, để có thể sửa đổi với mẫu ‘$1’. Nếu trang này đã tồn tại, bạn sẽ được chuyển đến mẫu để sửa đổi trang đó. Nếu không, bạn sẽ được chuyển đến mẫu để thêm trang.",
- "sf_formstart_noform_docu": "Nhập tên trang vào đây, và chọn mẫu để sửa đổi với nó. Nếu trang này đã tồn tại, bạn sẽ được chuyển tới mẫu sửa đổi trang. Nếu không, bạn sẽ được chuyển đến mẫu để thêm trang.",
- "sf_formstart_createoredit": "Tạo hay sửa đổi",
- "formedit": "Sửa bằng mẫu",
- "sf_formedit_createtitle": "Tạo $1: $2",
- "sf_formedit_createtitlenotarget": "Tạo $1",
- "sf_formedit_badurl": "Đây là trang để sửa đổi bằng biểu mẫu. Bạn phải xác định cả tên biểu mẫu và trang đích trong địa chỉ URL; nó sẽ có dạng là “{{ns:Special}}:FormEdit?form=<form name>&target=<target page>” hoặc “{{ns:Special}}:FormEdit/<form name>/<target page>”.",
- "sf_formedit_altforms": "Thay vào đó bạn có thể thêm trang này vào một trong những mẫu sau:",
- "sf_formedit_altformsonly": "Xin chọn một trong những mẫu dưới đây để thêm vào trang này:",
- "sf_formcreate": "Tạo bằng biểu mẫu",
- "sf_viewform": "Xem mẫu",
- "sf_editsource": "Sửa đổi mã nguồn",
- "sf_formedit_edittitle": "Sửa đổi $1: $2",
- "sf_formedit_morethanoneform": "Cảnh báo: Có nhiều hơn một mẫu đơn mặc định được định nghĩa cho trang này.",
- "sf_formedit_formwarning": "Cảnh báo: Trang này <a href=\"$1\">đã tồn tại</a>, nhưng nó không dùng mẫu này.",
- "sf_formedit_remove": "Dời lần nhúng này",
- "sf_formedit_addanother": "Thêm tiếp",
- "sf_formedit_none": "Không có",
- "sf_formedit_saveandcontinueediting": "Lưu và tiếp tục",
- "sf_formedit_tooltip_saveandcontinueediting": "Lưu dữ liệu và tiếp tục sửa đổi",
- "sf_autoedit_anoneditwarning": "Cảnh báo: Bạn chưa đăng nhập. Địa chỉ IP của bạn sẽ được ghi lại trong lịch sử sửa đổi của trang.",
- "sf-autoedit-wait": "Xin chờ…",
- "runquery": "Chạy truy vấn",
- "sf_runquery_title": "Chạy truy vấn: $1",
- "sf_formerrors_header": "Có lỗi với dữ liệu nhập mẫu của bạn; xem ở dưới",
- "sf_blank_error": "không được để trống",
- "sf_bad_url_error": "phải có định dạng URL đúng, bắt đầu bằng ‘http’",
- "sf_bad_email_error": "phải có định dạng địa chỉ thư điện tử đúng",
- "sf_bad_number_error": "phải có số đúng",
- "sf_bad_date_error": "phải là ngày đúng",
- "uploadwindow": "Cửa sổ tải",
- "sf_deletionlog": "Nhật trình xóa",
- "sf_property_isproperty": "Đây là tính chất thuộc kiểu $1.",
- "sf_property_linkstoform": "Nó liên kết đến các trang sử dụng mẫu $1.",
- "sf_property_allowedvals": "{{PLURAL:$1|Giá trị|Các giá trị}} cho phép của thuộc tính này là:",
- "sf_template_docu": "Đây là bản mẫu “$1”. Nó nên được gọi theo định dạng sau:",
- "sf_template_docufooter": "Sửa trang để xem văn bản bản mẫu.",
- "sf_form_docu": "Đây là biểu mẫu “$1”. Để tạo trang bằng biểu mẫu này, nhập vào tên trang ở dưới. Nếu một trang với tên này đã tồn tại, bạn sẽ được chuyển đến biểu mẫu để sửa trang đó.",
- "sf_form_freetextlabel": "Văn bản tự do",
- "sf_category_hasdefaultform": "Thể loại này sử dụng mẫu $1.",
- "sf_category_desc": "Đây là thể loại $1.",
- "sf_blank_namespace": "Chính",
- "right-viewedittab": "Xem thẻ “{{int:edit}}” tại các trang có thể sửa đổi dùng biểu mẫu",
- "right-editrestrictedfields": "Sửa đổi các trường biểu mẫu hạn chế"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/vo.json b/SemanticForms/i18n/vo.json
deleted file mode 100644
index 1aabd4f4..00000000
--- a/SemanticForms/i18n/vo.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Malafaya",
- "Smeira"
- ]
- },
- "sf_createproperty_propname": "Nem:",
- "sf_createproperty_proptype": "Sot:",
- "templates": "Samafomots",
- "createtemplate": "Jafön samafomoti",
- "sf_createtemplate_namelabel": "Nem samafomota:",
- "sf_createtemplate_templatefields": "Fels samafomota",
- "sf_createtemplate_fieldname": "Felanem:",
- "sf_createtemplate_aggregationlabel": "Tiäd liseda:",
- "sf_createtemplate_addfield": "Läükön feli",
- "sf_createtemplate_deletefield": "Moükön",
- "forms": "Fomets",
- "sf_forms_docu": "Fomets fovik dabinons in vük.",
- "createform": "Jafön fometi",
- "sf_createform_template": "Samafomot:",
- "sf_createform_field": "Fel:",
- "sf_createform_hidden": "Klänedik",
- "sf_createform_removetemplate": "Moükön samafomoti",
- "sf_createform_addtemplate": "Läükön samafomoti",
- "sf_createform_add": "Läükön",
- "sf_createform_choosefield": "Välön feli läükabik",
- "sf_createform_before": "Bü samafomot:",
- "sf_createform_additembeforesave": "Mutol läükön samafomoti pu bali fomete at büä okanol dakipön oni.",
- "createcategory": "Jafön kladi",
- "sf_createcategory_name": "Kladanem:",
- "sf_createcategory_defaultform": "Fomet kösömik:",
- "sf_createcategory_makesubcategory": "Vedükön atosi donakladi klada votik (no peflagon):",
- "formstart": "Läükön padi me fomet",
- "sf_formstart_badform": "Pöl: fometapad nonik petuvon lä $1",
- "sf_formstart_docu": "Penolös is nemi pada, kel poredakon me fomet: „$1“.\nIf pad at ya dabinon, ologol fometi ad redakön padi dabinöl at.\nVoto ologol fometi ad läükön padi.",
- "sf_formstart_noform_docu": "Penolös is padanemi e välolös fometi, me kel vilol redakön oni.\nIf pad at ya dabinons, ologol fometi ad redakön padi dabinöl at.\nVoto ologol fometi ad läükön padi.",
- "sf_formstart_createoredit": "Jafön u votükön",
- "formedit": "Redakön me fomet",
- "sf_formedit_createtitle": "Jafön $1: $2-i",
- "sf_formedit_badurl": "Pad at pagebon ad läükön nünodis. Mutoy penön fometanemi e zeilapadi ini el URL, kel muton logotön so: „Special:FormEdit?form=<fometanem>&target=<zeilapad>“, u: „Special:FormEdit/<fometanem>/<zeilapad>“.",
- "sf_formedit_altforms": "Kanol plao läükön padi at me bal fometas fovik:",
- "sf_formedit_altformsonly": "Välolös bali fometas sököl ad läükön padi at:",
- "sf_viewform": "Logön fometi",
- "sf_editsource": "Redakön fonäti",
- "sf_formedit_edittitle": "Votükön $1: $2",
- "sf_formedit_formwarning": "Nuned: Pad at <a href=\"$1\">ya dabinon</a>, ab no gebon fometi at.",
- "sf_formedit_remove": "Moükön",
- "sf_formedit_addanother": "Läükön votiki",
- "sf_formedit_none": "Nonik",
- "sf_blank_error": "no dalon vagön",
- "sf_bad_url_error": "muton labön fomäti verätik ela URL, primölo me el „http“.",
- "sf_bad_email_error": "muton labön fomäti ladeta leäktronik lonöföl",
- "sf_bad_number_error": "muton binön num lonöföl",
- "sf_bad_date_error": "muton binön dät lonöföl",
- "uploadwindow": "Löpükamafenät",
- "sf_template_docu": "Atos binon samafomot: „$1“.\nSöton pavokön ma fomät fovik:",
- "sf_template_docufooter": "Redakön padi at logön samafomotavödemi.",
- "sf_form_docu": "Pad at binon fomet: „$1“.\nAd läükön padi me fomet at, penolös padanemi dono; if pad labü nem at ya dabinon, ologol fometi ad redakön padi dabinöl at.",
- "sf_form_freetextlabel": "Vödem libik",
- "sf_category_hasdefaultform": "Klad at gebon fometi: $1.",
- "sf_category_desc": "Atos binon klad: $1.",
- "sf_blank_namespace": "Cifik"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/wa.json b/SemanticForms/i18n/wa.json
deleted file mode 100644
index 6353deec..00000000
--- a/SemanticForms/i18n/wa.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Srtxg"
- ]
- },
- "sf_createproperty_proptype": "Sôre:",
- "templates": "Modeles",
- "sf_createtemplate_deletefield": "Disfacer",
- "sf_createform_template": "Modele:",
- "sf_createform_add": "Radjouter",
- "sf_createclass_create": "Ahiver",
- "sf_formstart_createoredit": "Ahiver ou candjî",
- "formedit": "Candjî avou formulrece",
- "sf_formedit_formwarning": "Asteme: cisse pådje ci <a href=\"$1\">egzistêye dedja</a>, mins elle n' eploye nén li formulrece.",
- "sf_formedit_remove": "Oister",
- "sf_formedit_addanother": "Radjouter ene ôte",
- "sf_formedit_none": "Nole",
- "sf_formedit_saveandcontinueediting": "Schaper et continouwer",
- "sf_autoedit_anoneditwarning": "'''Asteme:''' Vos n' estoz nén elodjî.\nVoste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
- "sf_form_freetextlabel": "Tecse libe"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/yi.json b/SemanticForms/i18n/yi.json
deleted file mode 100644
index 3d157f5e..00000000
--- a/SemanticForms/i18n/yi.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "פוילישער",
- "පසිඳු කාවින්ද"
- ]
- },
- "sf_createproperty_propname": "אטריבוט נאמען:",
- "sf_createproperty_proptype": "טיפ:",
- "templates": "מוסטערן",
- "sf_templates_docu": "די פאלגנדע מוסטערן עקזיסטירן אין דער וויקי.",
- "sf_templates_definescat": "דעפינירט קאטעגאריע: $1",
- "createtemplate": "באשאפן א מוסטער",
- "sf_createtemplate_namelabel": "מוסטער נאמען:",
- "sf_createtemplate_templatefields": "מוסטער פֿעלדער",
- "sf_createtemplate_deletefield": "אויסמעקן",
- "sf_createform_hidden": "באַהאַלטן",
- "sf_createform_atend": "בײַם סוף",
- "sf_createform_add": "צולייגן",
- "createcategory": "שאפֿן א קאטעגאריע",
- "sf-createcategory-with-name": "שאפן קאטעגאריע: $1",
- "sf_createcategory_name": "קאטעגאריע נאָמען:",
- "sf_createclass_create": "שאַפֿן",
- "sf_formedit_createtitlenotarget": "שאפן $1",
- "sf_viewform": "ווײַזן פארעם",
- "sf_editsource": "רעדאקטירן מקור",
- "sf_formedit_edittitle": "רעדאקטירן $1: $2",
- "sf_formedit_remove": "אַראָפּנעמען דעם אינסטאנץ",
- "sf_formedit_addanotherabove": "צולייגן נאך אן אינסטאנץ פאר דעם דאזיקן",
- "sf_formedit_addanother": "צוילייגן נאך איינס",
- "sf_formedit_none": "קיין",
- "sf_formedit_emptytitle": "גרײַז: די אימפארטירטע דאטן שאפט א ליידיגן בלאט טיטל.",
- "sf_formedit_saveandcontinueediting": "אויפהיטן און גיין ווײַטער",
- "sf_formedit_saveandcontinue_summary": "אויפגעהיט דורכן \"$1\" קנעפל אין פארעם",
- "sf_autoedit_redlinkexists": "$1 עקזיסטירט שוין.",
- "sf_bad_date_error": "דארף זײַן א גילטיקע דאַטע",
- "sf_blank_namespace": "הויפט"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/zh-hans.json b/SemanticForms/i18n/zh-hans.json
deleted file mode 100644
index 958b9e1d..00000000
--- a/SemanticForms/i18n/zh-hans.json
+++ /dev/null
@@ -1,196 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Gzdavidwong",
- "Hydra",
- "Liangent",
- "Linforest",
- "Liuxinyu970226",
- "PhiLiP",
- "Shirayuki",
- "Xiaomingyan",
- "Yfdyh000"
- ]
- },
- "semanticforms-desc": "用于添加和编辑语义数据的表单",
- "specialpages-group-sf_group": "语义表单",
- "createproperty": "创建一个属性",
- "sf-createproperty-with-name": "创建属性:$1",
- "sf_createproperty_linktoform": "这个属性将链接到使用表单的页面:",
- "sf_createproperty_allowedvalsinput": "如果您希望此属性只允许含有特定的值,输入允许的值的列表,以逗号分隔(如果一个值包含逗号,使用“\\,”替换):",
- "sf_createproperty_propname": "属性名称:",
- "sf_createproperty_proptype": "类型:",
- "templates": "模板",
- "sf_templates_docu": "下列模板存在于wiki中。",
- "sf_templates_definescat": "定义分类: $1",
- "createtemplate": "创建模板",
- "sf-createtemplate-with-name": "创建模板:$1",
- "sf_createtemplate_namelabel": "模板名称:",
- "sf_createtemplate_multipleinstance": "此模板可以被多次包含在页面上。",
- "sf_createtemplate_categorylabel": "由模板定义的分类(可选):",
- "sf_createtemplate_templatefields": "模板字段",
- "sf_createtemplate_fieldsdesc": "为了让这个模板中的字段不需要字段名称,只需输入每个字段的索引(如1、2、3等)而不是实际名称作为名称。",
- "sf_createtemplate_fieldname": "字段名:",
- "sf_createtemplate_displaylabel": "显示标签:",
- "sf_createtemplate_semanticproperty": "语义属性:",
- "sf_createtemplate_fieldislist": "这个字段可以包含用逗号分隔的值的列表",
- "sf_createtemplate_aggregation": "聚合",
- "sf_createtemplate_aggregationdesc": "为了在使用这个模板的页面上列出所有包含指向此页面的属性的页面,在下面指定适当的属性:",
- "sf_createtemplate_aggregationlabel": "用于列表的标题:",
- "sf_createtemplate_outputformat": "输出格式:",
- "sf_createtemplate_standardformat": "表格",
- "sf_createtemplate_infoboxformat": "右侧信息框",
- "sf_createtemplate_plainformat": "纯文本",
- "sf_createtemplate_sectionsformat": "节",
- "sf_createtemplate_addfield": "添加字段",
- "sf_createtemplate_deletefield": "删除",
- "forms": "表单",
- "sf_forms_docu": "以下表单存在于wiki中。",
- "sf_forminputs_mandatory": "必须为这个输入项输入值",
- "sf_forminputs_restricted": "只有管理员才可以编辑这个输入项",
- "sf_forminputs_class": "这个输入项的HTML“class”属性",
- "sf_forminputs_default": "这个输入项的默认值",
- "sf_forminputs_preload": "内容将成为此输入项默认值的wiki页面",
- "sf_forminputs_property": "这个字段对应的语义属性",
- "sf_forminputs_size": "以字符数表示的文本字段大小",
- "sf_forminputs_maxlength": "在这个字段中允许的最大文本长度",
- "sf_forminputs_placeholder": "用户单击输入框之前一直显示在其中的帮助文本",
- "sf_forminputs_uploadable": "在这个输入项旁边放置一个“{{int:upload}}”链接",
- "sf_forminputs_defaultfilename": "上传的文件的默认文件名",
- "sf_forminputs_rows": "这个输入项的行数",
- "sf_forminputs_cols": "这个输入项的列数",
- "sf_forminputs_autogrow": "设置这个输入项增长尺寸如果文本超出了边界",
- "sf_forminputs_valuesfromproperty": "为这个输入项提供值作为值列表的这个wiki中的属性",
- "sf_forminputs_valuesfromcategory": "为这个输入项提供页面作为值列表的这个wiki中的分类",
- "sf_forminputs_valuesfromnamespace": "为这个输入项提供页面作为值列表的这个wiki中的名字空间",
- "sf_forminputs_valuesfromconcept": "为这个输入项提供页面作为值列表的这个wiki中的语义MediaWiki“概念”页面",
- "sf_forminputs_valuesfromurl": "为这个输入项提供结构化数据作为值列表的URL",
- "sf_forminputs_values": "这个输入项的值列表,以逗号分隔",
- "sf_forminputs_list": "标记输入项以包含值的列表",
- "sf_forminputs_delimiter": "两个字段值间的分隔符,如果这个输入项包含值列表",
- "sf_forminputs_remoteautocompletion": "使用远程自动完成",
- "sf_forminputs_existingvaluesonly": "只允许已经在列表中的值",
- "sf_forminputs_showonselect": "如果只有特定值被选择时显示的页面元素(例如:“值1=>div1;值2=>div2”)",
- "sf_forminputs_listboxsize": "以行数表示的列表框的高度",
- "sf_forminputs_includetimezone": "包含用于时区的输入项",
- "sf_forminputs_topcategory": "这些分类的上层分类(必填)",
- "sf_forminputs_hideroot": "隐藏父分类",
- "sf_forminputs_depth": "最初显示分类的层数",
- "sf_forminputs_height": "以像素数表示的这个输入项的高度",
- "sf_forminputs_width": "以像素数表示的这个输入项的宽度",
- "createform": "创建表单",
- "sf-createform-with-name": "创建表单:$1",
- "sf_createform_nameinput": "表单名称",
- "sf_createform_nameinputdesc": "(表单通常以它的主模板命名):",
- "sf_createform_template": "模板:",
- "sf_createform_templatelabelinput": "模板标签(可选):",
- "sf_createform_allowmultiple": "在创建的页面中允许多个(或零个)此模板的实例",
- "sf_createform_field": "字段:",
- "sf_createform_fieldprop": "这个字段定义属性$1,类型$2。",
- "sf_createform_fieldproplist": "这个字段定义含有类型$2的属性$1的元素列表。",
- "sf_createform_fieldpropunknowntype": "这个字段定义未指定类型的属性$1。",
- "sf_createform_inputtype": "输入项类型:",
- "sf_createform_inputtypedefault": "(默认)",
- "sf_createform_formlabel": "表单标签:",
- "sf_createform_hidden": "隐藏",
- "sf_createform_removetemplate": "移除模板",
- "sf_createform_addtemplate": "添加模板:",
- "sf_createform_atend": "在最后",
- "sf_createform_add": "添加",
- "sf_createform_choosefield": "选择要添加的字段",
- "sf_createform_before": "在模板前:",
- "sf_createform_additembeforesave": "在您保存之前,您必须向表单添加至少一个模板。",
- "createcategory": "创建分类",
- "sf-createcategory-with-name": "创建分类:$1",
- "sf_createcategory_name": "分类名:",
- "sf_createcategory_defaultform": "默认表单:",
- "sf_createcategory_makesubcategory": "将这个设置成另一分类的子分类(可选):",
- "createclass": "创建类",
- "sf_createclass_docu": "在这里输入为一个类创建属性、模板、表单和分类的所有数据。使用页面$1代替以使用更多选项。",
- "sf_createclass_allowedvalues": "允许取值:",
- "sf_createclass_listofvalues": "取值列表?",
- "sf_createclass_nameinput": "表单名称:",
- "sf_createclass_missingvalues": "有必填字段没有填写。",
- "sf_createclass_success": "属性、模板、表单和分类将被创建。",
- "sf_createclass_create": "创建",
- "formstart": "开始表单",
- "sf_formstart_badform": "错误:在$1没有找到表单页面。",
- "sf_formstart_badtitle": "错误:“$1”不是有效的页面标题。",
- "sf_formstart_docu": "在这里输入页面名,以用表单“$1”编辑。\n如果页面已经存在,您将被送到编辑页面的表单。\n否则,您将被送到添加页面的表单。",
- "sf_formstart_noform_docu": "在这里输入页面名,并选择用来编辑它的表单。\n如果页面已经存在,您将被送到编辑页面的表单。\n否则,您将被送到添加页面的表单。",
- "sf_formstart_createoredit": "创建或编辑",
- "formedit": "用表格编辑",
- "sf_formedit_createtitle": "创建$1:$2",
- "sf_formedit_createtitlenotarget": "创建$1",
- "sf_formedit_badurl": "这是用表单编辑的页面。您必须同时在URL中指定表单名和目标页面;\n它看起来应该像‘Special:FormEdit?form=<表单名>&target=<目标页面>’,或者‘Special:FormEdit/<表单名>/<目标页面>’。",
- "sf_formedit_altforms": "您也可以用下列表单添加这个页面:",
- "sf_formedit_altformsonly": "请从下面的表单中选择一项来添加这个页面:",
- "sf_formcreate": "用表单创建",
- "sf_viewform": "查看表格",
- "sf_editsource": "编辑源码",
- "sf_formedit_edittitle": "编辑$1:$2",
- "sf_formedit_morethanoneform": "'''警告:'''这个页面定义了多于一个的默认表单。",
- "sf_formedit_formwarning": "警告:这个页面<a href=\"$1\">已存在</a>,但它不使用这个表单。",
- "sf_formedit_mismatchedbrackets": "警告:此页面之中含有尚未结束的花括号或方括号,因而该页面将不会得到表单的正确处理。请在继续之前<a href=\"$1\">修复源文本之中的这一错误</a>。",
- "sf_formedit_remove": "移除此实例",
- "sf_formedit_addanotherabove": "在这个上面添加另一个实例",
- "sf_formedit_addanother": "添加其他",
- "sf_formedit_none": "无",
- "sf_formedit_emptytitle": "错误:输入的数据生成空白页面标题。",
- "sf_formedit_hookerror": "错误:一个MediaWiki扩展阻止对目标页面的修改。",
- "sf_formedit_saveandcontinueediting": "保存并继续",
- "sf_formedit_saveandcontinue_summary": "已采用表单中的\"$1\"按钮进行了保存",
- "sf_formedit_tooltip_saveandcontinueediting": "保存数据并且继续编辑",
- "sf_autoedit_anoneditwarning": "警告:你没有登录。你的IP地址将被记录在该页面的编辑历史中。",
- "sf_autoedit_success": "已成功使用表单$2修改[[$1]]。",
- "sf_autoedit_fail": "修改[[$1]]失败。",
- "sf_autoedit_notargetspecified": "没有指定目标页面。",
- "sf_autoedit_invalidtargetspecified": "指定的目标页面'''$1'''无效。",
- "sf_autoedit_invalidform": "'''$1'''不是有效的表单。",
- "sf_autoedit_redirectlimitexeeded": "表单$1超过了最大重定向限制。",
- "sf_autoedit_invalidredirecttarget": "表单$2的$1是一个无效的重定向目标。",
- "sf_autoedit_invalidpreloadspecified": "指定的预载入页面$1无效。",
- "sf_autoedit_redlinkexists": "$1已存在。",
- "sf_autoedit_noformfound": "未指定表单。",
- "sf_autoedit_toomanyformsfound": "有不止一个可用于页面的表单。",
- "sf_autoedit_readonly": "数据库当前正为修改操作而被锁定。原因:$1",
- "sf_autoedit_nosemanticform": "无法获得页面$1的表单$2。详情请参见[[{{#special:FormEdit}}/$2/$1]]。",
- "sf_autoedit_summary": "已从页面$1当中进行了自动编辑。",
- "sf-autoedit-wait": "等待中...",
- "runquery": "运行查询",
- "sf_runquery_badurl": "您必须在URL中指定表单名称;\nURL应该看起来像‘Special:RunQuery/<表单名>’。",
- "sf_runquery_title": "运行查询:$1",
- "sf_runquery_additionalquery": "附加查询",
- "sf_formerrors_header": "在您的表单输入中存在错误;如下所示",
- "sf_too_few_instances_error": "此模板必须有至少$1个实例。",
- "sf_too_many_instances_error": "此模板不能超过$1个实例。",
- "sf_blank_error": "不可留空",
- "sf_bad_url_error": "必须使用正确的URL格式,以“http”开头",
- "sf_bad_email_error": "必须使用有效的电子邮件地址格式",
- "sf_bad_number_error": "必须为有效数字",
- "sf_bad_date_error": "必须为有效日期",
- "uploadwindow": "上传窗口",
- "sf_deletionlog": "删除日志",
- "sf-preview-header": "表单预览",
- "sf-preview-note": "这是该表单使用时的样子:",
- "sf-pageschemas-pagenameformula": "页面名称公式:",
- "sf-pageschemas-createtitle": "新页面表单标题:",
- "sf-pageschemas-edittitle": "现有页面表单标题:",
- "sf-pageschemas-inputtype": "输入类型(要设置为默认值,请保持空白):",
- "sf_property_isproperty": "这是一个类型为$1的属性。",
- "sf_property_linkstoform": "它链接到使用表单$1的页面。",
- "sf_property_allowedvals": "允许{{PLURAL:$1|value for this property is|该属性的取值为}}:",
- "sf_template_docu": "这是“$1”模板。\n它应该以以下格式被调用:",
- "sf_template_docufooter": "编辑页面以阅读模板文本。",
- "sf_form_docu": "这是“$1”表单。\n要用这个表单创建一个页面,在下面输入页面名;\n如果使用这个名称的页面已存在,您将被送到编辑那个页面的表单。",
- "sf_form_freetextlabel": "自由文本",
- "sf_category_hasdefaultform": "这个分类使用表单$1。",
- "sf_category_desc": "这是$1分类。",
- "sf_blank_namespace": "首页",
- "right-viewedittab": "查看可用表格编辑页面的“{{int:edit}}”标签",
- "right-editrestrictedfields": "编辑受限制的表单字段",
- "right-createclass": "创建新的语义类",
- "action-createclass": "创建新的语义类",
- "action-editrestrictedfields": "编辑受限制的表单域",
- "action-viewedittab": "查看可用表格编辑页面的“{{int:edit}}”标签"
-} \ No newline at end of file
diff --git a/SemanticForms/i18n/zh-hant.json b/SemanticForms/i18n/zh-hant.json
deleted file mode 100644
index e4ecce97..00000000
--- a/SemanticForms/i18n/zh-hant.json
+++ /dev/null
@@ -1,180 +0,0 @@
-{
- "@metadata": {
- "authors": [
- "Ch.Andrew",
- "Gzdavidwong",
- "Liangent",
- "Mark85296341",
- "Oapbtommy",
- "Shirayuki",
- "Wrightbus"
- ]
- },
- "semanticforms-desc": "用於添加和編輯語義數據的表單",
- "specialpages-group-sf_group": "語義表單",
- "createproperty": "創建一個屬性",
- "sf_createproperty_linktoform": "這個屬性將鏈接到使用表單的頁面:",
- "sf_createproperty_allowedvalsinput": "如果您希望此屬性只允許含有特定的值,輸入允許的值的列表,以逗號分隔(如果一個值包含逗號,使用“\\,”替換):",
- "sf_createproperty_propname": "屬性名稱:",
- "sf_createproperty_proptype": "類型:",
- "templates": "模板",
- "sf_templates_docu": "下列模板存在於wiki中。",
- "sf_templates_definescat": "定義分類: $1",
- "createtemplate": "建立一個模板",
- "sf_createtemplate_namelabel": "模板名稱:",
- "sf_createtemplate_categorylabel": "由模板定義的分類(可選):",
- "sf_createtemplate_templatefields": "模板字段",
- "sf_createtemplate_fieldsdesc": "為了讓這個模板中的字段不需要字段名稱,只需輸入每個字段的索引(如1、2、3等)而不是實際名稱作為名稱。",
- "sf_createtemplate_fieldname": "字段名:",
- "sf_createtemplate_displaylabel": "顯示標籤:",
- "sf_createtemplate_semanticproperty": "語義屬性:",
- "sf_createtemplate_fieldislist": "這個字段可以包含用逗號分隔的值的列表",
- "sf_createtemplate_aggregation": "聚合",
- "sf_createtemplate_aggregationdesc": "為了在使用這個模板的頁面上列出所有包含指向此頁面的屬性的頁面,在下面指定適當的屬性:",
- "sf_createtemplate_aggregationlabel": "用於列表的標題:",
- "sf_createtemplate_outputformat": "輸出格式:",
- "sf_createtemplate_standardformat": "表格",
- "sf_createtemplate_infoboxformat": "側邊資訊方塊",
- "sf_createtemplate_plainformat": "純文字",
- "sf_createtemplate_sectionsformat": "節",
- "sf_createtemplate_addfield": "添加字段",
- "sf_createtemplate_deletefield": "刪除",
- "forms": "表單",
- "sf_forms_docu": "以下表單存在於wiki中。",
- "sf_forminputs_mandatory": "必須為這個輸入項輸入值",
- "sf_forminputs_restricted": "只有管理員才可以編輯這個輸入項",
- "sf_forminputs_class": "這個輸入項的HTML“class”屬性",
- "sf_forminputs_default": "這個輸入項的默認值",
- "sf_forminputs_preload": "內容將成為此輸入項默認值的wiki頁面",
- "sf_forminputs_property": "這個字段對應的語義屬性",
- "sf_forminputs_size": "以字符數表示的文本字段大小",
- "sf_forminputs_maxlength": "在這個字段中允許的最大文本長度",
- "sf_forminputs_placeholder": "用戶單擊輸入框之前一直顯示在其中的幫助文本",
- "sf_forminputs_uploadable": "在這個輸入項旁邊放置「{{int:upload}}」連結",
- "sf_forminputs_defaultfilename": "上傳的文件的默認文件名",
- "sf_forminputs_rows": "這個輸入項的行數",
- "sf_forminputs_cols": "這個輸入項的列數",
- "sf_forminputs_autogrow": "設置這個輸入項增長尺寸如果文本超出了邊界",
- "sf_forminputs_valuesfromproperty": "為這個輸入項提供值作為值列表的這個wiki中的屬性",
- "sf_forminputs_valuesfromcategory": "為這個輸入項提供頁面作為值列表的這個wiki中的分類",
- "sf_forminputs_valuesfromnamespace": "為這個輸入項提供頁面作為值列表的這個wiki中的名字空間",
- "sf_forminputs_valuesfromconcept": "為這個輸入項提供頁面作為值列表的這個wiki中的語義MediaWiki“概念”頁面",
- "sf_forminputs_valuesfromurl": "為這個輸入項提供結構化數據作為值列表的URL",
- "sf_forminputs_values": "這個輸入項的值列表,以逗號分隔",
- "sf_forminputs_list": "標記輸入項以包含值的列表",
- "sf_forminputs_delimiter": "兩個字段值間的分隔符,如果這個輸入項包含值列表",
- "sf_forminputs_remoteautocompletion": "使用遠程自動完成",
- "sf_forminputs_existingvaluesonly": "只允許已經在列表中的值",
- "sf_forminputs_showonselect": "如果只有特定值被選擇時顯示的頁面元素(例如:“值1=>div1;值2=>div2”)",
- "sf_forminputs_listboxsize": "以行數表示的列表框的高度",
- "sf_forminputs_includetimezone": "包含用於時區的輸入項",
- "sf_forminputs_topcategory": "這些分類的上層分類(必填)",
- "sf_forminputs_hideroot": "隱藏父類別",
- "sf_forminputs_depth": "最初顯示類別的層數",
- "sf_forminputs_height": "以像素數表示的這個輸入項的高度",
- "sf_forminputs_width": "以像素數表示的這個輸入項的寬度",
- "createform": "創建表單",
- "sf_createform_nameinput": "表單名稱",
- "sf_createform_nameinputdesc": "(表單通常以它的主模板命名):",
- "sf_createform_template": "模板:",
- "sf_createform_templatelabelinput": "模板標籤(可選):",
- "sf_createform_allowmultiple": "在建立的頁面中允許多重(或是不用)此模板的實例",
- "sf_createform_field": "事件:",
- "sf_createform_fieldprop": "這個字段定義類型$2的屬性$1。",
- "sf_createform_fieldproplist": "這個字段定義含有類型$2的屬性$1的元素列表。",
- "sf_createform_fieldpropunknowntype": "這個字段定義未指定類型的屬性$1。",
- "sf_createform_inputtype": "輸入項類型:",
- "sf_createform_inputtypedefault": "(預設)",
- "sf_createform_formlabel": "表單標籤:",
- "sf_createform_hidden": "隱藏",
- "sf_createform_removetemplate": "移除模板",
- "sf_createform_addtemplate": "添加模板:",
- "sf_createform_atend": "在最後",
- "sf_createform_add": "新增",
- "sf_createform_choosefield": "選擇要添加的字段",
- "sf_createform_before": "在模板前:",
- "sf_createform_additembeforesave": "在您保存之前,您必須向表單添加至少一個模板。",
- "createcategory": "創造一個分類",
- "sf_createcategory_name": "分類名:",
- "sf_createcategory_defaultform": "默認表單:",
- "sf_createcategory_makesubcategory": "將這個設置成另一分類的子分類(可選):",
- "createclass": "創建類",
- "sf_createclass_docu": "在這裡輸入為一個類創建屬性、模板、表單和分類的所有數據。使用頁面$1代替以使用更多選項。",
- "sf_createclass_allowedvalues": "允許取值:",
- "sf_createclass_listofvalues": "取值列表?",
- "sf_createclass_nameinput": "表單名稱:",
- "sf_createclass_missingvalues": "有必填字段沒有填寫。",
- "sf_createclass_success": "屬性、模板、表單和分類將被創建。",
- "sf_createclass_create": "創建",
- "formstart": "開始表單",
- "sf_formstart_badform": "錯誤:在$1沒有找到表單頁面。",
- "sf_formstart_badtitle": "錯誤:“$1”不是有效的頁面標題。",
- "sf_formstart_docu": "在這裡輸入頁面名,以用表單“$1”編輯。\n如果頁面已經存在,您將被送到編輯頁面的表單。\n否則,您將被送到添加頁面的表單。",
- "sf_formstart_noform_docu": "在這裡輸入頁面名,並選擇用來編輯它的表單。\n如果頁面已經存在,您將被送到編輯頁面的表單。\n否則,您將被送到添加頁面的表單。",
- "sf_formstart_createoredit": "建立或編輯",
- "formedit": "用表單編輯",
- "sf_formedit_createtitle": "創建$1:$2",
- "sf_formedit_createtitlenotarget": "創建$1",
- "sf_formedit_badurl": "這是用表單編輯的頁面。您必須同時在URL中指定表單名和目標頁面;\n它看起來應該像‘Special:FormEdit?form=<表單名>&target=<目標頁面>’,或者‘Special:FormEdit/<表單名>/<目標頁面>’。",
- "sf_formedit_altforms": "您也可以用下列表單添加這個頁面:",
- "sf_formedit_altformsonly": "請從下面的表單中選擇一項來添加這個頁面:",
- "sf_formcreate": "用表單創建",
- "sf_viewform": "檢視表格",
- "sf_editsource": "編輯源碼",
- "sf_formedit_edittitle": "編輯$1:$2",
- "sf_formedit_morethanoneform": "'''警告:'''這個頁面定義了多於一個的默認表單。",
- "sf_formedit_formwarning": "警告:這個頁面<a href=\"$1\">已存在</a>,但它不使用這個表單。",
- "sf_formedit_mismatchedbrackets": "警告:此頁面之中含有尚未結束的花括號或方括號,因而該頁面將不會得到表單的正確處理。請在繼續之前<a href=\"$1\">修復源文本之中的這一錯誤</a>。",
- "sf_formedit_remove": "移除",
- "sf_formedit_addanother": "添加另一個",
- "sf_formedit_none": "無",
- "sf_formedit_emptytitle": "錯誤:輸入的數據生成空白頁面標題。",
- "sf_formedit_hookerror": "錯誤:一個MediaWiki擴展阻止對目標頁面的修改。",
- "sf_formedit_saveandcontinueediting": "保存並繼續",
- "sf_formedit_saveandcontinue_summary": "已採用表單中的\"$1\"按鈕進行了保存",
- "sf_formedit_tooltip_saveandcontinueediting": "保存數據並且繼續編輯",
- "sf_autoedit_anoneditwarning": "警告:您沒有登錄。您的IP地址將記錄在此頁的編輯歷史中。",
- "sf_autoedit_success": "已成功使用表單$2修改[[$1]]。",
- "sf_autoedit_notargetspecified": "未指定目標頁面。",
- "sf_autoedit_redlinkexists": "$1已存在。",
- "sf_autoedit_noformfound": "未指定表單。",
- "sf_autoedit_toomanyformsfound": "有不止一個可用於頁面的表單。",
- "sf_autoedit_readonly": "數據庫當前正為修改操作而被鎖定。原因:$1",
- "sf_autoedit_nosemanticform": "無法獲得頁面$1的表單$2。詳情請參見[[{{#special:FormEdit}}/$2/$1]]。",
- "sf_autoedit_summary": "已從頁面$1當中進行了自動編輯。",
- "sf-autoedit-wait": "等待...",
- "runquery": "運行查詢",
- "sf_runquery_badurl": "您必須在URL中指定表單名稱;\nURL應該看起來像‘Special:RunQuery/<表單名>’。",
- "sf_runquery_title": "運行查詢:$1",
- "sf_runquery_additionalquery": "附加查詢",
- "sf_formerrors_header": "在您的表單輸入中存在錯誤;如下所示",
- "sf_blank_error": "不可留空",
- "sf_bad_url_error": "必須使用正確的URL格式,以“http”開頭",
- "sf_bad_email_error": "必須使用有效的電子郵件地址格式",
- "sf_bad_number_error": "必須為有效數字",
- "sf_bad_date_error": "必須為有效日期",
- "uploadwindow": "上傳窗口",
- "sf_deletionlog": "刪除紀錄",
- "sf-preview-header": "表單預覽",
- "sf-preview-note": "這是該表單使用時的樣子:",
- "sf-pageschemas-pagenameformula": "頁面名稱公式:",
- "sf-pageschemas-createtitle": "新頁面表單標題:",
- "sf-pageschemas-edittitle": "現有頁面表單標題:",
- "sf-pageschemas-inputtype": "輸入類型(要設置為默認值,請保持空白):",
- "sf_property_isproperty": "這是一個類型為$1的屬性。",
- "sf_property_linkstoform": "它鏈接到使用表單$1的頁面。",
- "sf_property_allowedvals": "允許{{PLURAL:$1|value for this property is|該屬性的取值為}}:",
- "sf_template_docu": "這是“$1”模板。\n它應該以以下格式被調用:",
- "sf_template_docufooter": "編輯頁面以閱讀模板文本。",
- "sf_form_docu": "這是“$1”表單。\n要用這個表單創建一個頁面,在下面輸入頁面名;\n如果使用這個名稱的頁面已存在,您將被送到編輯那個頁面的表單。",
- "sf_form_freetextlabel": "自由文字",
- "sf_category_hasdefaultform": "這個分類使用表單$1。",
- "sf_category_desc": "這是$1分類。",
- "sf_blank_namespace": "首頁",
- "right-viewedittab": "在可經由表單來編輯的頁面上檢視「{{int:edit}}」標籤",
- "right-editrestrictedfields": "編輯受限制的表單字段",
- "right-createclass": "創建新的語義類",
- "action-createclass": "創建新的語義類",
- "action-editrestrictedfields": "編輯受限制的表單域",
- "action-viewedittab": "在可經由表單來編輯的頁面上檢視「{{int:edit}}」標籤"
-} \ No newline at end of file
diff --git a/SemanticForms/includes/SF_AutocompleteAPI.php b/SemanticForms/includes/SF_AutocompleteAPI.php
deleted file mode 100644
index 2712d786..00000000
--- a/SemanticForms/includes/SF_AutocompleteAPI.php
+++ /dev/null
@@ -1,247 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup SF
- */
-
-/**
- * Adds and handles the 'sfautocomplete' action to the MediaWiki API.
- *
- * @ingroup SF
- *
- * @author Sergey Chernyshev
- * @author Yaron Koren
- */
-class SFAutocompleteAPI extends ApiBase {
-
- public function __construct( $query, $moduleName ) {
- parent::__construct( $query, $moduleName );
- }
-
- public function execute() {
- $params = $this->extractRequestParams();
- $substr = $params['substr'];
- $namespace = $params['namespace'];
- $property = $params['property'];
- $category = $params['category'];
- $concept = $params['concept'];
- $external_url = $params['external_url'];
- $baseprop = $params['baseprop'];
- $basevalue = $params['basevalue'];
- //$limit = $params['limit'];
-
- if ( is_null( $baseprop ) && strlen( $substr ) == 0 ) {
- $this->dieUsage( 'The substring must be specified', 'param_substr' );
- }
-
- if ( !is_null( $baseprop ) ) {
- if ( !is_null( $property ) ) {
- $data = self::getAllValuesForProperty( $property, null, $baseprop, $basevalue );
- }
- } elseif ( !is_null( $property ) ) {
- $data = self::getAllValuesForProperty( $property, $substr );
- } elseif ( !is_null( $category ) ) {
- $data = SFUtils::getAllPagesForCategory( $category, 3, $substr );
- } elseif ( !is_null( $concept ) ) {
- $data = SFUtils::getAllPagesForConcept( $concept, $substr );
- } elseif ( !is_null( $namespace ) ) {
- $data = SFUtils::getAllPagesForNamespace( $namespace, $substr );
- } elseif ( !is_null( $external_url ) ) {
- $data = SFUtils::getValuesFromExternalURL( $external_url, $substr );
- } else {
- $data = array();
- }
-
- // If we got back an error message, exit with that message.
- if ( !is_array( $data ) ) {
- $this->dieUsage( $data );
- }
-
- // to prevent JS parsing problems, display should be the same
- // even if there are no results
- /*
- if ( count( $data ) <= 0 ) {
- return;
- }
- */
-
- // Format data as the API requires it - this is not needed
- // for "values from url", where the data is already formatted
- // correctly.
- if ( is_null( $external_url ) ) {
- $formattedData = array();
- foreach ( $data as $value ) {
- $formattedData[] = array( 'title' => $value );
- }
- } else {
- $formattedData = $data;
- }
-
- // Set top-level elements.
- $result = $this->getResult();
- $result->setIndexedTagName( $formattedData, 'p' );
- $result->addValue( null, $this->getModuleName(), $formattedData );
- }
-
- protected function getAllowedParams() {
- return array (
- 'limit' => array (
- ApiBase::PARAM_TYPE => 'limit',
- ApiBase::PARAM_DFLT => 10,
- ApiBase::PARAM_MIN => 1,
- ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
- ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
- ),
- 'substr' => null,
- 'property' => null,
- 'category' => null,
- 'concept' => null,
- 'namespace' => null,
- 'external_url' => null,
- 'baseprop' => null,
- 'basevalue' => null,
- );
- }
-
- protected function getParamDescription() {
- return array (
- 'substr' => 'Search substring',
- 'property' => 'Semantic property for which to search values',
- 'category' => 'Category for which to search values',
- 'concept' => 'Concept for which to search values',
- 'namespace' => 'Namespace for which to search values',
- 'external_url' => 'Alias for external URL from which to get values',
- 'baseprop' => 'A previous property in the form to check against',
- 'basevalue' => 'The value to check for the previous property',
- //'limit' => 'Limit how many entries to return',
- );
- }
-
- protected function getDescription() {
- return 'Autocompletion call used by the Semantic Forms extension (http://www.mediawiki.org/Extension:Semantic_Forms)';
- }
-
- protected function getExamples() {
- return array (
- 'api.php?action=sfautocomplete&substr=te',
- 'api.php?action=sfautocomplete&substr=te&property=Has_author',
- 'api.php?action=sfautocomplete&substr=te&category=Authors',
- );
- }
-
- public function getVersion() {
- return __CLASS__ . ': $Id$';
- }
-
- private static function getAllValuesForProperty( $property_name, $substring, $basePropertyName = null, $baseValue = null ) {
- global $sfgMaxAutocompleteValues, $sfgCacheAutocompleteValues, $sfgAutocompleteCacheTimeout;
- global $smwgDefaultStore;
-
- $values = array();
- $db = wfGetDB( DB_SLAVE );
- $sqlOptions = array();
- $sqlOptions['LIMIT'] = $sfgMaxAutocompleteValues;
-
- $property = SMWPropertyValue::makeUserProperty( $property_name );
- $propertyHasTypePage = ( $property->getPropertyTypeID() == '_wpg' );
- $property_name = str_replace( ' ', '_', $property_name );
- $conditions = array( 'p_ids.smw_title' => $property_name );
-
- // Use cache if allowed
- if ( $sfgCacheAutocompleteValues ) {
- $cache = SFFormUtils::getFormCache();
- // Remove trailing whitespace to avoid unnecessary database selects
- $cacheKeyString = $property_name . '::' . rtrim( $substring );
- if ( !is_null( $basePropertyName ) ) {
- $cacheKeyString .= ',' . $basePropertyName . ',' . $baseValue;
- }
- $cacheKey = wfMemcKey( 'sf-autocomplete' , md5( $cacheKeyString ) );
- $values = $cache->get( $cacheKey );
-
- if ( !empty( $values ) ){
- // Return with results immediately
- return $values;
- }
- }
-
- if ( $propertyHasTypePage ) {
- $valueField = 'o_ids.smw_title';
- if ( $smwgDefaultStore === 'SMWSQLStore3' ) {
- $idsTable = $db->tableName( 'smw_object_ids' );
- $propsTable = $db->tableName( 'smw_di_wikipage' );
- } else {
- $idsTable = $db->tableName( 'smw_ids' );
- $propsTable = $db->tableName( 'smw_rels2' );
- }
- $fromClause = "$propsTable p JOIN $idsTable p_ids ON p.p_id = p_ids.smw_id JOIN $idsTable o_ids ON p.o_id = o_ids.smw_id";
- } else {
- if ( $smwgDefaultStore === 'SMWSQLStore3' ) {
- $valueField = 'p.o_hash';
- $idsTable = $db->tableName( 'smw_object_ids' );
- $propsTable = $db->tableName( 'smw_di_blob' );
- } else {
- $valueField = 'p.value_xsd';
- $idsTable = $db->tableName( 'smw_ids' );
- $propsTable = $db->tableName( 'smw_atts2' );
- }
- $fromClause = "$propsTable p JOIN $idsTable p_ids ON p.p_id = p_ids.smw_id";
- }
-
- if ( !is_null( $basePropertyName ) ) {
- $baseProperty = SMWPropertyValue::makeUserProperty( $basePropertyName );
- $basePropertyHasTypePage = ( $baseProperty->getPropertyTypeID() == '_wpg' );
-
- $basePropertyName = str_replace( ' ', '_', $basePropertyName );
- $conditions['base_p_ids.smw_title'] = $basePropertyName;
- if ( $basePropertyHasTypePage ) {
- if ( $smwgDefaultStore === 'SMWSQLStore3' ) {
- $idsTable = $db->tableName( 'smw_object_ids' );
- $propsTable = $db->tableName( 'smw_di_wikipage' );
- } else {
- $idsTable = $db->tableName( 'smw_ids' );
- $propsTable = $db->tableName( 'smw_rels2' );
- }
- $fromClause .= " JOIN $propsTable p_base ON p.s_id = p_base.s_id";
- $fromClause .= " JOIN $idsTable base_p_ids ON p_base.p_id = base_p_ids.smw_id JOIN $idsTable base_o_ids ON p_base.o_id = base_o_ids.smw_id";
- $baseValue = str_replace( ' ', '_', $baseValue );
- $conditions['base_o_ids.smw_title'] = $baseValue;
- } else {
- if ( $smwgDefaultStore === 'SMWSQLStore3' ) {
- $baseValueField = 'p_base.o_hash';
- $idsTable = $db->tableName( 'smw_object_ids' );
- $propsTable = $db->tableName( 'smw_di_blob' );
- } else {
- $baseValueField = 'p_base.value_xsd';
- $idsTable = $db->tableName( 'smw_ids' );
- $propsTable = $db->tableName( 'smw_atts2' );
- }
- $fromClause .= " JOIN $propsTable p_base ON p.s_id = p_base.s_id";
- $fromClause .= " JOIN $idsTable base_p_ids ON p_base.p_id = base_p_ids.smw_id";
- $conditions[$baseValueField] = $baseValue;
- }
- }
-
- if ( !is_null( $substring ) ) {
- // "Page" type property valeus are stored differently
- // in the DB, i.e. underlines instead of spaces.
- $conditions[] = SFUtils::getSQLConditionForAutocompleteInColumn( $valueField, $substring, $propertyHasTypePage );
- }
-
- $sqlOptions['ORDER BY'] = $valueField;
- $res = $db->select( $fromClause, "DISTINCT $valueField",
- $conditions, __METHOD__, $sqlOptions );
-
- while ( $row = $db->fetchRow( $res ) ) {
- $values[] = str_replace( '_', ' ', $row[0] );
- }
- $db->freeResult( $res );
-
- if ( $sfgCacheAutocompleteValues ) {
- // Save to cache.
- $cache->set( $cacheKey, $values, $sfgAutocompleteCacheTimeout );
- }
-
- return $values;
- }
-
-}
diff --git a/SemanticForms/includes/SF_AutoeditAPI.php b/SemanticForms/includes/SF_AutoeditAPI.php
deleted file mode 100644
index 1e57ff18..00000000
--- a/SemanticForms/includes/SF_AutoeditAPI.php
+++ /dev/null
@@ -1,1182 +0,0 @@
-<?php
-/**
- * File holding the SFAutoEditAPI class
- *
- * @author Stephan Gambke
- * @file
- * @ingroup SemanticForms
- */
-
-/**
- * The SF_AutoEditAPI class.
- *
- * @ingroup SemanticForms
- */
-class SFAutoeditAPI extends ApiBase {
-
- const ACTION_FORMEDIT = 0;
- const ACTION_SAVE = 1;
- const ACTION_PREVIEW = 2;
- const ACTION_DIFF = 3;
-
- /**
- * Error level used when a non-recoverable error occurred.
- */
- const ERROR = 0;
-
- /**
- * Error level used when a recoverable error occurred.
- */
- const WARNING = 1;
-
- /**
- * Error level used to give information that might be of interest to the user.
- */
- const NOTICE = 2;
-
- /**
- * Error level used for debug messages.
- */
- const DEBUG = 3;
-
- private $mOptions = array( );
- private $mAction;
- private $mStatus;
-
- /**
- * Converts an options string into an options array and stores it
- *
- * @param string $options
- * @return the options array
- */
- function addOptionsFromString( $options ) {
- return $this->parseDataFromQueryString( $this->mOptions, $options );
- }
-
- /**
- * Returns the options array
- * @return array
- */
- function getOptions() {
- return $this->mOptions;
- }
-
- /**
- * Returns the action performed by the module.
- *
- * Return value is either null or one of ACTION_SAVE, ACTION_PREVIEW,
- * ACTION_FORMEDIT
- *
- * @return null|number
- */
- function getAction() {
- return $this->mAction;
- }
-
- /**
- * Sets the options array
- */
- function setOptions( $options ) {
- $this->mOptions = $options;
- }
-
- /**
- * Sets an option in the options array
- */
- function setOption( $option, $value ) {
- $this->mOptions[$option] = $value;
- }
-
- /**
- * Returns the HTTP status
- *
- * 200 - ok
- * 400 - error
- *
- * @return number
- */
- function getStatus() {
- return $this->mStatus;
- }
-
- /**
- * Evaluates the parameters, performs the requested API query, and sets up
- * the result.
- *
- * The execute() method will be invoked when an API call is processed.
- *
- * The result data is stored in the ApiResult object available through
- * getResult().
- */
- function execute() {
-
- $this->prepareAction();
-
- try {
- $this->doAction();
- } catch ( MWException $e ) {
- $this->logMessage( $e->getMessage(), $e->getCode() );
- }
-
- $this->finalizeResults();
- $this->setHeaders();
- }
-
- /**
- *
- */
- function prepareAction() {
-
- // get options from the request, but keep the explicitly set options
- global $wgVersion;
- if ( version_compare( $wgVersion, '1.20', '>=' ) ) {
- $data = $this->getRequest()->getValues();
- } else { // TODO: remove else branch when raising supported version to MW 1.20, getValues() was buggy before
- $data = $_POST + $_GET;
- }
- $this->mOptions = SFUtils::array_merge_recursive_distinct( $data, $this->mOptions );
-
- global $wgParser;
- if ( $wgParser === null ) {
- $wgParser = new Parser();
- }
-
- $wgParser->startExternalParse(
- null,
- ParserOptions::newFromUser( $this->getUser() ),
- Parser::OT_WIKI
- );
-
- // MW uses the parameter 'title' instead of 'target' when submitting
- // data for formedit action => use that
- if ( !array_key_exists( 'target', $this->mOptions ) && array_key_exists( 'title', $this->mOptions ) ) {
-
- $this->mOptions['target'] = $this->mOptions['title'];
- unset( $this->mOptions['title'] );
- }
-
- // if the 'query' parameter was used, unpack the param string
- if ( array_key_exists( 'query', $this->mOptions ) ) {
-
- $this->addOptionsFromString( $this->mOptions['query'] );
- unset( $this->mOptions['query'] );
- }
-
- // if an action is explicitly set in the form data, use that
- if ( array_key_exists( 'wpSave', $this->mOptions ) ) {
-
- // set action to 'save' if requested
- $this->mAction = self::ACTION_SAVE;
- unset( $this->mOptions['wpSave'] );
- } else if ( array_key_exists( 'wpPreview', $this->mOptions ) ) {
-
- // set action to 'preview' if requested
- $this->mAction = self::ACTION_PREVIEW;
- unset( $this->mOptions['wpPreview'] );
- } else if ( array_key_exists( 'wpDiff', $this->mOptions ) ) {
-
- // set action to 'preview' if requested
- $this->mAction = self::ACTION_DIFF;
- unset( $this->mOptions['wpDiff'] );
- } else if ( array_key_exists( 'action', $this->mOptions ) ) {
-
- switch ( $this->mOptions['action'] ) {
-
- case 'sfautoedit' :
- $this->mAction = self::ACTION_SAVE;
- break;
- case 'preview' :
- $this->mAction = self::ACTION_PREVIEW;
- break;
- default :
- $this->mAction = self::ACTION_FORMEDIT;
- }
- } else {
- // set default action
- $this->mAction = self::ACTION_FORMEDIT;
- }
-
- $hookQuery = null;
-
- // ensure 'form' key exists
- if ( array_key_exists( 'form', $this->mOptions ) ) {
- $hookQuery = $this->mOptions['form'];
- } else {
- $this->mOptions['form'] = '';
- }
-
- // ensure 'target' key exists
- if ( array_key_exists( 'target', $this->mOptions ) ) {
- if ( $hookQuery !== null ) {
- $hookQuery .= '/' . $this->mOptions['target'];
- }
- } else {
- $this->mOptions['target'] = '';
- }
-
- // Normalize form and target names
-
- $form = Title::newFromText( $this->mOptions['form'] );
- if ( $form !== null ) {
- $this->mOptions['form'] = $form->getPrefixedText();
- }
-
- $target = Title::newFromText( $this->mOptions['target'] );
- if ( $target !== null ) {
- $this->mOptions['target'] = $target->getPrefixedText();
- }
-
- wfRunHooks( 'sfSetTargetName', array( &$this->mOptions['target'], $hookQuery ) );
-
- // set html return status. If all goes well, this will not be changed
- $this->mStatus = 200;
- }
-
- /**
- * Get the Title object of a form suitable for editing the target page.
- *
- * @return Title
- * @throws MWException
- */
- protected function getFormTitle() {
-
- // if no form was explicitly specified, try for explicitly set alternate forms
- if ( $this->mOptions['form'] === '' ) {
-
- $this->logMessage( 'No form specified. Will try to find the default form for the target page.', self::DEBUG );
-
- $formNames = array();
-
- // try explicitly set alternative forms
- if ( array_key_exists( 'alt_form', $this->mOptions ) ) {
-
- $formNames = (array)$this->mOptions['alt_form']; // cast to array to make sure we get an array, even if only a string was sent
-
- }
-
- // if no alternate forms were explicitly set, try finding a default form for the target page
- if ( count( $formNames ) === 0 ) {
-
- // if no form and and no alt forms and no target page was specified, give up
- if ( $this->mOptions['target'] === '' ) {
- throw new MWException( wfMessage( 'sf_autoedit_notargetspecified' )->parse() );
- }
-
- $targetTitle = Title::newFromText( $this->mOptions['target'] );
-
- // if the specified target title is invalid, give up
- if ( !$targetTitle instanceof Title ) {
- throw new MWException( wfMessage( 'sf_autoedit_invalidtargetspecified', $this->mOptions['target'] )->parse() );
- }
-
- $formNames = SFFormLinker::getDefaultFormsForPage( $targetTitle );
-
- // if no default form can be found, try alternate forms
- if ( count( $formNames ) === 0 ) {
-
- $formNames = SFFormLinker::getFormsThatPagePointsTo( $targetTitle->getText(), $targetTitle->getNamespace(), SFFormLinker::ALTERNATE_FORM );
-
- // if still no form can be found, give up
- if ( count( $formNames ) === 0 ) {
- throw new MWException( wfMessage( 'sf_autoedit_noformfound' )->parse() );
- }
-
- }
-
- }
-
- // if more than one form was found, issue a notice and give up
- // this happens if no default form but several alternate forms are defined
- if ( count( $formNames ) > 1 ) {
- throw new MWException( wfMessage( 'sf_autoedit_toomanyformsfound' )->parse(), self::DEBUG );
- }
-
- $this->mOptions['form'] = $formNames[0];
-
- $this->logMessage( 'Using ' . $this->mOptions['form'] . ' as default form.', self::DEBUG );
- }
-
- $formTitle = Title::makeTitleSafe( SF_NS_FORM, $this->mOptions['form'] );
-
- // if the given form is not a valid title, give up
- if ( !($formTitle instanceOf Title) ) {
- throw new MWException( wfMessage( 'sf_autoedit_invalidform', $this->mOptions['form'] )->parse() );
- }
-
- // if the form page is a redirect, follow the redirect
- if ( $formTitle->isRedirect() ) {
-
- $this->logMessage( 'Form ' . $this->mOptions['form'] . ' is a redirect. Finding target.', self::DEBUG );
-
- // FIXME: Title::newFromRedirectRecurse is deprecated as of MW 1.21
- $formTitle = Title::newFromRedirectRecurse( WikiPage::factory( $formTitle )->getRawText() );
-
- // if we exeeded $wgMaxRedirects or encountered an invalid redirect target, give up
- if ( $formTitle->isRedirect() ) {
-
- $newTitle = WikiPage::factory( $formTitle )->getRedirectTarget();
-
- if ( $newTitle instanceOf Title && $newTitle->isValidRedirectTarget() ) {
- throw new MWException( wfMessage( 'sf_autoedit_redirectlimitexeeded', $this->mOptions['form'] )->parse() );
- } else {
- throw new MWException( wfMessage( 'sf_autoedit_invalidredirecttarget', $newTitle->getFullText(), $this->mOptions['form'] )->parse() );
- }
- }
- }
-
- // if specified or found form does not exist (e.g. is a red link), give up
- // FIXME: Throw specialized error message, so a list of alternative forms can be shown
- if ( !$formTitle->exists() ) {
- throw new MWException( wfMessage( 'sf_autoedit_invalidform', $this->mOptions['form'] )->parse() );
- }
-
- return $formTitle;
- }
-
- protected function setupEditPage( $targetContent ) {
-
- // Find existing target article if it exists, or create a new one.
- $targetTitle = Title::newFromText( $this->mOptions['target'] );
-
- // if the specified target title is invalid, give up
- if ( !$targetTitle instanceof Title ) {
- throw new MWException( wfMessage( 'sf_autoedit_invalidtargetspecified', $this->mOptions['target'] )->parse() );
- }
-
- $article = new Article( $targetTitle );
-
- // set up a normal edit page
- // we'll feed it our data to simulate a normal edit
- $editor = new EditPage( $article );
-
- // set up form data:
- // merge data coming from the web request on top of some defaults
- $data = array_merge(
- array(
- 'wpTextbox1' => $targetContent,
- 'wpSummary' => '',
- 'wpStarttime' => wfTimestampNow(),
- 'wpEdittime' => '',
- 'wpEditToken' => isset( $this->mOptions[ 'token' ] ) ? $this->mOptions[ 'token' ] : '',
- 'action' => 'submit',
- ),
- $this->mOptions
- );
-
- if ( array_key_exists( 'format', $data ) ) {
- unset( $data['format'] );
- }
-
- // set up a faux request with the simulated data
- $request = new FauxRequest( $data, true );
-
- // and import it into the edit page
- $editor->importFormData( $request );
-
- return $editor;
- }
-
- /**
- * Sets the output HTML of wgOut as the module's result
- */
- protected function setResultFromOutput() {
-
- // turn on output buffering
- ob_start();
-
- // generate preview document and write it to output buffer
- $this->getOutput()->output();
-
- // retrieve the preview document from output buffer
- $targetHtml = ob_get_contents();
-
- // clean output buffer, so MW can use it again
- ob_clean();
-
- // store the document as result
- $this->getResult()->addValue( null, 'result', $targetHtml );
-
- }
-
- protected function doPreview( $editor ) {
-
- global $wgOut;
-
- $previewOutput = $editor->getPreviewText();
-
- wfRunHooks( 'EditPage::showEditForm:initial', array( &$editor, &$wgOut ) );
-
- $this->getOutput()->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
- $this->getOutput()->setRobotPolicy( 'noindex,nofollow' );
-
- // This hook seems slightly odd here, but makes things more
- // consistent for extensions.
- wfRunHooks( 'OutputPageBeforeHTML', array( &$wgOut, &$previewOutput ) );
-
- $this->getOutput()->addHTML( Html::rawElement( 'div', array( 'id' => 'wikiPreview' ), $previewOutput ) );
-
- $this->setResultFromOutput();
-
- }
-
- protected function doDiff( $editor ) {
- $editor->showDiff();
- $this->setResultFromOutput();
- }
-
- protected function doStore( EditPage $editor ) {
-
- $title = $editor->getTitle();
-
- // If they used redlink=1 and the page exists, redirect to the main article and send notice
- if ( $this->getRequest()->getBool( 'redlink' ) && $title->exists() ) {
- $this->logMessage( wfMessage( 'sf_autoedit_redlinkexists' )->parse(), self::WARNING );
- }
-
- $permErrors = $title->getUserPermissionsErrors( 'edit', $this->getUser() );
-
- // if this title needs to be created, user needs create rights
- if ( !$title->exists() ) {
- $permErrors = array_merge( $permErrors, wfArrayDiff2( $title->getUserPermissionsErrors( 'create', $this->getUser() ), $permErrors ) );
- }
-
- if ( $permErrors ) {
-
- // Auto-block user's IP if the account was "hard" blocked
- $this->getUser()->spreadAnyEditBlock();
-
- foreach ( $permErrors as $error ) {
- $this->logMessage( wfMessage( $error )->parse() );
- }
-
- return;
- }
-
- $resultDetails = false;
- # Allow bots to exempt some edits from bot flagging
- $bot = $this->getUser()->isAllowed( 'bot' ) && $editor->bot;
-
- if ( $editor->mTokenOk ) {
- $status = $editor->internalAttemptSave( $resultDetails, $bot );
- }
- else {
- throw new MWException( wfMessage( 'session_fail_preview' )->parse() );
- }
-
- switch ( $status->value ) {
- case EditPage::AS_HOOK_ERROR_EXPECTED: // A hook function returned an error
- case EditPage::AS_CONTENT_TOO_BIG: // Content too big (> $wgMaxArticleSize)
- case EditPage::AS_ARTICLE_WAS_DELETED: // article was deleted while editting and param wpRecreate == false or form was not posted
- case EditPage::AS_CONFLICT_DETECTED: // (non-resolvable) edit conflict
- case EditPage::AS_SUMMARY_NEEDED: // no edit summary given and the user has forceeditsummary set and the user is not editting in his own userspace or talkspace and wpIgnoreBlankSummary == false
- case EditPage::AS_TEXTBOX_EMPTY: // user tried to create a new section without content
- case EditPage::AS_MAX_ARTICLE_SIZE_EXCEEDED: // article is too big (> $wgMaxArticleSize), after merging in the new section
- case EditPage::AS_END: // WikiPage::doEdit() was unsuccessfull
-
- throw new MWException( wfMessage( 'sf_autoedit_fail', $this->mOptions['target'] )->parse() );
-
- case EditPage::AS_HOOK_ERROR: // Article update aborted by a hook function
-
- $this->logMessage( 'Article update aborted by a hook function', self::DEBUG );
- return false; // success
-
- // TODO: This error code only exists from 1.21 onwards. It is
- // suitably handled by the default branch, but really should get its
- // own branch. Uncomment once compatibility to pre1.21 is dropped.
-// case EditPage::AS_PARSE_ERROR: // can't parse content
-//
-// throw new MWException( $status->getHTML() );
-// return true; // fail
-
- case EditPage::AS_SUCCESS_NEW_ARTICLE: // Article successfully created
-
- $query = $resultDetails['redirect'] ? 'redirect=no' : '';
- $anchor = isset( $resultDetails['sectionanchor'] ) ? $resultDetails['sectionanchor'] : '';
-
- $this->getOutput()->redirect( $title->getFullURL( $query ) . $anchor );
- $this->getResult()->addValue( NULL, 'redirect', $title->getFullURL( $query ) . $anchor );
- return false; // success
-
- case EditPage::AS_SUCCESS_UPDATE: // Article successfully updated
-
- $extraQuery = '';
- $sectionanchor = $resultDetails['sectionanchor'];
-
- // Give extensions a chance to modify URL query on update
- wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $editor->getArticle(), &$sectionanchor, &$extraQuery ) );
-
- if ( $resultDetails['redirect'] ) {
- if ( $extraQuery == '' ) {
- $extraQuery = 'redirect=no';
- } else {
- $extraQuery = 'redirect=no&' . $extraQuery;
- }
- }
-
- $this->getOutput()->redirect( $title->getFullURL( $extraQuery ) . $sectionanchor );
- $this->getResult()->addValue( NULL, 'redirect', $title->getFullURL( $extraQuery ) . $sectionanchor );
-
- return false; // success
-
- case EditPage::AS_BLANK_ARTICLE: // user tried to create a blank page
-
- $this->logMessage( 'User tried to create a blank page', self::DEBUG );
-
- $this->getOutput()->redirect( $editor->getContextTitle()->getFullURL() );
- $this->getResult()->addValue( NULL, 'redirect', $editor->getContextTitle()->getFullURL() );
-
- return false; // success
-
- case EditPage::AS_SPAM_ERROR: // summary contained spam according to one of the regexes in $wgSummarySpamRegex
-
- $match = $resultDetails['spam'];
- if ( is_array( $match ) ) {
- $match = $this->getLanguage()->listToText( $match );
- }
-
- throw new MWException( wfMessage( 'spamprotectionmatch', wfEscapeWikiText( $match ) )->parse() ); // FIXME: Include better error message
-
- case EditPage::AS_BLOCKED_PAGE_FOR_USER: // User is blocked from editting editor page
- throw new UserBlockedError( $this->getUser()->getBlock() );
-
- case EditPage::AS_IMAGE_REDIRECT_ANON: // anonymous user is not allowed to upload (User::isAllowed('upload') == false)
- case EditPage::AS_IMAGE_REDIRECT_LOGGED: // logged in user is not allowed to upload (User::isAllowed('upload') == false)
- throw new PermissionsError( 'upload' );
-
- case EditPage::AS_READ_ONLY_PAGE_ANON: // editor anonymous user is not allowed to edit editor page
- case EditPage::AS_READ_ONLY_PAGE_LOGGED: // editor logged in user is not allowed to edit editor page
- throw new PermissionsError( 'edit' );
-
- case EditPage::AS_READ_ONLY_PAGE: // wiki is in readonly mode (wfReadOnly() == true)
- throw new ReadOnlyError;
-
- case EditPage::AS_RATE_LIMITED: // rate limiter for action 'edit' was tripped
- throw new ThrottledError();
-
- case EditPage::AS_NO_CREATE_PERMISSION: // user tried to create editor page, but is not allowed to do that ( Title->usercan('create') == false )
- $permission = $title->isTalkPage() ? 'createtalk' : 'createpage';
- throw new PermissionsError( $permission );
-
- default:
- // We don't recognize $status->value. The only way that can happen
- // is if an extension hook aborted from inside ArticleSave.
- // Render the status object into $editor->hookError
- $editor->hookError = '<div class="error">' . $status->getWikitext() . '</div>';
- throw new MWException( $status->getHTML() );
- }
- }
-
- protected function doFormEdit( $formHTML, $formJS ) {
- // return form html and js in the result
- $this->getResult()->addValue( array('form'), 'HTML', $formHTML );
- $this->getResult()->addValue( array('form'), 'JS', $formJS );
-}
-
- protected function finalizeResults() {
-
- // set response text depending on the status and the requested action
- if ( $this->mStatus === 200 ) {
- if ( array_key_exists( 'ok text', $this->mOptions ) ) {
- $responseText = MessageCache::singleton()->parse( $this->mOptions['ok text'], Title::newFromText( $this->mOptions['target'] ) )->getText();
- } elseif ( $this->mAction === self::ACTION_SAVE ) {
- $responseText = wfMessage( 'sf_autoedit_success', $this->mOptions['target'], $this->mOptions['form'] )->parse();
- } else {
- $responseText = null;
- }
- } else {
- // get errortext (or use default)
- if ( array_key_exists( 'error text', $this->mOptions ) ) {
- $responseText = MessageCache::singleton()->parse( $this->mOptions['error text'], Title::newFromText( $this->mOptions['target'] ) )->getText();
- } elseif ( $this->mAction === self::ACTION_SAVE ) {
- $responseText = wfMessage( 'sf_autoedit_fail', $this->mOptions['target'] )->parse();
- } else {
- $responseText = null;
- }
- }
-
- $result = $this->getResult();
-
- if ( $responseText !== null ) {
- $result->addValue( null, 'responseText', $responseText );
- }
-
- $result->addValue( null, 'status', $this->mStatus, true );
- $result->addValue( array('form'), 'title', $this->mOptions['form'] );
- $result->addValue( null, 'target', $this->mOptions['target'], true );
- }
-
- /**
- * Set custom headers to attach to the answer
- */
- protected function setHeaders() {
-
- if ( !headers_sent() ) {
-
- header( 'X-Status: ' . $this->mStatus, true, $this->mStatus );
- header( 'X-Form: ' . $this->mOptions['form'] );
- header( 'X-Target: ' . $this->mOptions['target'] );
-
- $redirect = $this->getOutput()->getRedirect();
- if ( $redirect ) {
- header( 'X-Location: ' . $redirect );
- }
- }
- }
-
- /**
- * Generates a target name from the given target name formula
- *
- * This parses the formula and replaces &lt;unique number&gt; tags
- *
- * @param type $targetNameFormula
- *
- * @throws MWException
- * @return type
- */
- protected function generateTargetName( $targetNameFormula ) {
-
- $targetName = $targetNameFormula;
-
- // prepend a super-page, if one was specified
- if ( $this->getRequest()->getCheck( 'super_page' ) ) {
- $targetName = $this->getRequest()->getVal( 'super_page' ) . '/' . $targetName;
- }
-
- // prepend a namespace, if one was specified
- if ( $this->getRequest()->getCheck( 'namespace' ) ) {
- $targetName = $this->getRequest()->getVal( 'namespace' ) . ':' . $targetName;
- }
-
- // replace "unique number" tag with one that won't get erased by the next line
- $targetName = preg_replace( '/<unique number(.*)>/', '{num\1}', $targetName, 1 );
-
- // if any formula stuff is still in the name after the parsing, just remove it
- // FIXME: This is wrong. If anything is still left, something should have been present in the form and wasn't. An error should be raised.
- //$targetName = StringUtils::delimiterReplace( '<', '>', '', $targetName );
-
- // replace spaces back with underlines, in case a magic word or parser
- // function name contains underlines - hopefully this won't cause
- // problems of its own
- $targetName = str_replace( ' ', '_', $targetName );
-
- // now run the parser on it
- global $wgParser;
- $targetName = $wgParser->transformMsg( $targetName, ParserOptions::newFromUser( null ) );
-
- $titleNumber = '';
- $isRandom = false;
- $randomNumHasPadding = false;
- $randomNumDigits = 6;
-
- if ( preg_match( '/{num.*}/', $targetName, $matches ) && strpos( $targetName, '{num' ) !== false ) {
- // Random number
- if ( preg_match( '/{num;random(;(0)?([1-9][0-9]*))?}/', $targetName, $matches ) ) {
- $isRandom = true;
- $randomNumHasPadding = array_key_exists( 2, $matches );
- $randomNumDigits = ( array_key_exists( 3, $matches ) ? $matches[3] : $randomNumDigits );
- $titleNumber = SFUtils::makeRandomNumber( $randomNumDigits, $randomNumHasPadding );
- } else if ( preg_match( '/{num.*start[_]*=[_]*([^;]*).*}/', $targetName, $matches ) ) {
- // get unique number start value
- // from target name; if it's not
- // there, or it's not a positive
- // number, start it out as blank
- ;
- if ( count( $matches ) == 2 && is_numeric( $matches[1] ) && $matches[1] >= 0 ) {
- // the "start" value"
- $titleNumber = $matches[1];
- }
- } else if ( preg_match( '/^(_?{num.*}?)*$/', $targetName, $matches ) ) {
- // the target name contains only underscores and number fields,
- // i.e. would result in an empty title without the number set
- $titleNumber = '1';
- } else {
- $titleNumber = '';
- }
-
- // set target title
- $targetTitle = Title::newFromText( preg_replace( '/{num.*}/', $titleNumber, $targetName ) );
-
- // if the specified target title is invalid, give up
- if ( !$targetTitle instanceof Title ) {
- throw new MWException( wfMessage( 'sf_autoedit_invalidtargetspecified', trim( preg_replace( '/<unique number(.*)>/', $titleNumber, $targetNameFormula ) ) )->parse() );
- }
-
- // if title exists already cycle through numbers for this tag until
- // we find one that gives a nonexistent page title;
- //
- // can not use $targetTitle->exists(); it does not use
- // Title::GAID_FOR_UPDATE, which is needed to get correct data from
- // cache; use $targetTitle->getArticleID() instead
- while ( $targetTitle->getArticleID( Title::GAID_FOR_UPDATE ) !== 0 ) {
-
- if ( $isRandom ) {
- $titleNumber = SFUtils::makeRandomNumber( $randomNumDigits, $randomNumHasPadding );
- }
- // if title number is blank, change it to 2; otherwise,
- // increment it, and if necessary pad it with leading 0s as well
- elseif ( $titleNumber == "" ) {
- $titleNumber = 2;
- } else {
- $titleNumber = str_pad( $titleNumber + 1, strlen( $titleNumber ), '0', STR_PAD_LEFT );
- }
-
- $targetTitle = Title::newFromText( preg_replace( '/{num.*}/', $titleNumber, $targetName ) );
- }
-
- $targetName = $targetTitle->getPrefixedText();
- }
-
- return $targetName;
- }
-
- /**
- * Depending on the requested action this method will try to store/preview
- * the data in mOptions or retrieve the edit form.
- *
- * The form and target page will be available in mOptions after execution of
- * the method.
- *
- * Errors and warnings are logged in the API result under the 'errors' key.
- * The general request status is maintained in mStatus.
- *
- * @global $wgRequest
- * @global $wgOut
- * @global SFFormPrinter $sfgFormPrinter
- * @throws MWException
- */
- public function doAction() {
- global $wgOut, $wgRequest, $sfgFormPrinter;
-
- // if the wiki is read-only, do not save
- if ( wfReadOnly() ) {
-
- if ( $this->mAction === self::ACTION_SAVE ) {
- throw new MWException( wfMessage( 'sf_autoedit_readonly', wfReadOnlyReason() )->parse() );
- }
-
- // even if not saving notify client anyway. Might want to dislay a notice
- $this->logMessage( wfMessage( 'sf_autoedit_readonly', wfReadOnlyReason() )->parse(), self::NOTICE );
- }
-
- // find the title of the form to be used
- $formTitle = $this->getFormTitle();
-
- // get the form content
- $formContent = StringUtils::delimiterReplace(
- '<noinclude>', // start delimiter
- '</noinclude>', // end delimiter
- '', // replace by
- WikiPage::factory( $formTitle )->getRawText() // subject
- );
-
- // signals that the form was submitted
- // always true, else we would not be here
- $isFormSubmitted = $this->mAction === self::ACTION_SAVE || $this->mAction === self::ACTION_PREVIEW || $this->mAction === self::ACTION_DIFF;
-
- // the article id of the form to be used
- $formArticleId = $formTitle->getArticleID();
-
- // the name of the target page; might be empty when using the one-step-process
- $targetName = $this->mOptions['target'];
-
- // if the target page was not specified, try finding the page name formula
- // (Why is this not done in SFFormPrinter::formHTML?)
- if ( $targetName === '' ) {
-
- // Parse the form to see if it has a 'page name' value set.
- if ( preg_match( '/{{{\s*info.*page name\s*=\s*(.*)}}}/msU', $formContent, $matches ) ) {
- $pageNameElements = SFUtils::getFormTagComponents( trim( $matches[1] ) );
- $targetNameFormula = $pageNameElements[0];
- } else {
- throw new MWException( wfMessage( 'sf_autoedit_notargetspecified' )->parse() );
- }
-
- $targetTitle = null;
- } else {
- $targetNameFormula = null;
- $targetTitle = Title::newFromText( $targetName );
- }
-
- $preloadContent = '';
-
- // save $wgRequest for later restoration
- $oldRequest = $wgRequest;
-
- // preload data if not explicitly excluded and if the preload page exists
- if ( !isset( $this->mOptions['preload'] ) || $this->mOptions['preload'] !== false ) {
-
- if ( isset( $this->mOptions['preload'] ) && is_string( $this->mOptions['preload'] ) ) {
- $preloadTitle = Title::newFromText( $this->mOptions['preload'] );
- } else {
- $preloadTitle = Title::newFromText( $targetName );
- }
-
- if ( $preloadTitle !== null && $preloadTitle->exists() ) {
-
- // the content of the page that was specified to be used for preloading
- $preloadContent = WikiPage::factory( $preloadTitle )->getRawText();
-
- $pageExists = true;
-
- } else {
- if ( isset( $this->mOptions['preload'] ) ) {
- $this->logMessage( wfMessage( 'sf_autoedit_invalidpreloadspecified', $this->mOptions['preload'] )->parse(), self::WARNING );
- }
- }
- }
-
- // allow extensions to set/change the preload text
- wfRunHooks( 'sfEditFormPreloadText', array( &$preloadContent, $targetTitle, $formTitle ) );
-
- // flag to keep track of formHTML runs
- $formHtmlHasRun = false;
-
- if ( $preloadContent !== '' ) {
-
- // Spoof $wgRequest for SFFormPrinter::formHTML().
- $wgRequest = new FauxRequest( $this->mOptions, true );
-
- // call SFFormPrinter::formHTML to get at the form html of the existing page
- list ( $formHTML, $formJS, $targetContent, $form_page_title, $generatedTargetNameFormula ) =
- $sfgFormPrinter->formHTML(
- $formContent, $isFormSubmitted, $pageExists, $formArticleId, $preloadContent, $targetName, $targetNameFormula
- );
-
- $formHtmlHasRun = true;
-
- // parse the data to be preloaded from the form html of the
- // existing page
- $data = $this->parseDataFromHTMLFrag( $formHTML );
-
- // and merge/overwrite it with the new data
- $this->mOptions = SFUtils::array_merge_recursive_distinct( $data, $this->mOptions );
- }
-
- // We already preloaded stuff for saving/previewing -
- // do not do this again.
- if ( $isFormSubmitted && !$wgRequest->getCheck( 'partial' ) ) {
- $preloadContent = '';
- $pageExists = false;
- } else {
- // Source of the data is a page.
- $pageExists = ( is_a( $targetTitle, 'Title') && $targetTitle->exists() );
- }
-
- // Spoof $wgRequest for SFFormPrinter::formHTML().
- $wgRequest = new FauxRequest( $this->mOptions, true );
-
- // if necessary spoof wgOut; if we took the general $wgOut again some JS
- // modules might attach themselves twice and thus be called twice
- if ( $formHtmlHasRun ) {
- // save wgOut for later restoration
- $oldOut = $wgOut;
- $wgOut = new OutputPage( RequestContext::getMain() );
- }
-
- // get wikitext for submitted data and form
- list ( $formHTML, $formJS, $targetContent, $generatedFormName, $generatedTargetNameFormula ) =
- $sfgFormPrinter->formHTML( $formContent, $isFormSubmitted, $pageExists, $formArticleId, $preloadContent, $targetName, $targetNameFormula );
-
- if ( $formHtmlHasRun ) {
- // restore wgOut
- $wgOut = $oldOut;
- }
-
- // restore original request
- $wgRequest = $oldRequest;
-
- if ( $generatedFormName !== '' ) {
- $formTitle = Title::newFromText( $generatedFormName );
- $this->mOptions['formtitle'] = $formTitle->getText();
- }
-
- $this->mOptions['formHTML'] = $formHTML;
- $this->mOptions['formJS'] = $formJS;
-
- if ( $isFormSubmitted ) {
-
- // if the target page was not specified, see if something was generated
- // from the target name formula
- if ( $this->mOptions['target'] === '' ) {
-
- // if no name was generated, we can not save => give up
- if ( $generatedTargetNameFormula === '' ) {
- throw new MWException( wfMessage( 'sf_autoedit_notargetspecified' )->parse() );
- }
-
- $this->mOptions['target'] = $this->generateTargetName( $generatedTargetNameFormula );
- }
-
- // Lets other code process additional form-definition syntax
- wfRunHooks( 'sfWritePageData', array( $this->mOptions['form'], Title::newFromText( $this->mOptions['target'] ), &$targetContent ) );
-
- $editor = $this->setupEditPage( $targetContent );
-
- // perform the requested action
- if ( $this->mAction === self::ACTION_PREVIEW ) {
- $this->doPreview( $editor );
- } else if ( $this->mAction === self::ACTION_DIFF ) {
- $this->doDiff( $editor );
- } else {
- $this->doStore( $editor );
- }
- } else if ( $this->mAction === self::ACTION_FORMEDIT ) {
- $this->doFormEdit( $formHTML, $formJS );
- }
- }
-
- private function parseDataFromHTMLFrag( $html ) {
-
- $data = array( );
- $doc = new DOMDocument();
- @$doc->loadHTML(
- '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head><body>'
- . $html
- . '</body></html>'
- );
-
- // Process input tags.
- $inputs = $doc->getElementsByTagName( 'input' );
-
- for ( $i = 0; $i < $inputs->length; $i++ ) {
-
- $input = $inputs->item( $i );
- $type = $input->getAttribute( 'type' );
- $name = trim( $input->getAttribute( 'name' ) );
-
- if ( !$name || $input->hasAttribute( 'disabled' ) ) {
- continue;
- }
-
- if ( $type === '' )
- $type = 'text';
-
- switch ( $type ) {
- case 'checkbox':
- case 'radio':
- if ( $input->hasAttribute( 'checked' ) ) {
- self::addToArray( $data, $name, $input->getAttribute( 'value' ) );
- }
- break;
-
- // case 'button':
- case 'hidden':
- case 'image':
- case 'password':
- // case 'reset':
- // case 'submit':
- case 'text':
- self::addToArray( $data, $name, $input->getAttribute( 'value' ) );
- break;
- }
- }
-
- // Process select tags
- $selects = $doc->getElementsByTagName( 'select' );
-
- for ( $i = 0; $i < $selects->length; $i++ ) {
-
- $select = $selects->item( $i );
- $name = trim( $select->getAttribute( 'name' ) );
-
- if ( !$name || $select->hasAttribute( 'disabled' ) ) {
- continue;
- }
-
- $options = $select->getElementsByTagName( 'option' );
-
- // if the current $select is a radio button select (i.e. not multiple)
- // set the first option to selected as default. This may be overwritten
- // in the loop below
- if ( $options->length > 0 && (!$select->hasAttribute( 'multiple' ) ) ) {
- self::addToArray( $data, $name, $options->item( 0 )->getAttribute( 'value' ) );
- }
-
- for ( $o = 0; $o < $options->length; $o++ ) {
- if ( $options->item( $o )->hasAttribute( 'selected' ) ) {
- if ( $options->item( $o )->getAttribute( 'value' ) ) {
- self::addToArray( $data, $name, $options->item( $o )->getAttribute( 'value' ) );
- } else {
- self::addToArray( $data, $name, $options->item( $o )->nodeValue );
- }
- }
- }
- }
-
- // Process textarea tags
- $textareas = $doc->getElementsByTagName( 'textarea' );
-
- for ( $i = 0; $i < $textareas->length; $i++ ) {
- $textarea = $textareas->item( $i );
- $name = trim( $textarea->getAttribute( 'name' ) );
-
- if ( !$name )
- continue;
-
- self::addToArray( $data, $name, $textarea->textContent );
- }
-
- return $data;
- }
-
- /**
- * Parses data from a query string into the $data array
- *
- * @param Array $data
- * @param String $queryString
- * @return Array
- */
- private function parseDataFromQueryString( &$data, $queryString ) {
- $params = explode( '&', $queryString );
-
- foreach ( $params as $param ) {
- $elements = explode( '=', $param, 2 );
-
- $key = trim( urldecode( $elements[0] ) );
- $value = count( $elements ) > 1 ? urldecode( $elements[1] ) : null;
-
- if ( $key == "query" || $key == "query string" ) {
- $this->parseDataFromQueryString( $data, $value );
- } else {
- self::addToArray( $data, $key, $value );
- }
- }
-
- return $data;
- }
-
- // This function recursively inserts the value into a tree.
- // $array is root
- // $key identifies path to position in tree.
- // Format: 1stLevelName[2ndLevel][3rdLevel][...], i.e. normal array notation
- // $value: the value to insert
- // $toplevel: if this is a toplevel value.
- public static function addToArray( &$array, $key, $value, $toplevel = true ) {
- $matches = array( );
-
- if ( preg_match( '/^([^\[\]]*)\[([^\[\]]*)\](.*)/', $key, $matches ) ) {
-
- // for some reason toplevel keys get their spaces encoded by MW.
- // We have to imitate that.
- if ( $toplevel ) {
- $key = str_replace( ' ', '_', $matches[1] );
- } else {
- $key = $matches[1];
- }
-
- // if subsequent element does not exist yet or is a string (we prefer arrays over strings)
- if ( !array_key_exists( $key, $array ) || is_string( $array[$key] ) ) {
- $array[$key] = array( );
- }
-
- self::addToArray( $array[$key], $matches[2] . $matches[3], $value, false );
- } else {
- if ( $key ) {
- // only add the string value if there is no child array present
- if ( !array_key_exists( $key, $array ) || !is_array( $array[$key] ) ) {
- $array[$key] = $value;
- }
- } else {
- array_push( $array, $value );
- }
- }
- }
-
- /**
- * Add error message to the ApiResult
- *
- * @param string $msg
- * @param int $errorLevel
- *
- * @return string
- */
- private function logMessage( $msg, $errorLevel = self::ERROR ) {
-
- if ( $errorLevel === self::ERROR ) {
- $this->mStatus = 400;
- }
-
- $this->getResult()->addValue( array( 'errors' ), null, array( 'level' => $errorLevel, 'message' => $msg ) );
-
- return $msg;
- }
-
- /**
- * Indicates whether this module requires write mode
- * @return bool
- */
- public function isWriteMode() {
- return true;
- }
-
- /**
- * Returns the array of allowed parameters (parameter name) => (default
- * value) or (parameter name) => (array with PARAM_* constants as keys)
- * Don't call this function directly: use getFinalParams() to allow
- * hooks to modify parameters as needed.
- * @return array or false
- */
- function getAllowedParams() {
- return array(
- 'form' => null,
- 'target' => null,
- 'query' => null,
- 'preload' => null
- );
- }
-
- /**
- * Returns an array of parameter descriptions.
- * Don't call this functon directly: use getFinalParamDescription() to
- * allow hooks to modify descriptions as needed.
- * @return array or false
- */
- function getParamDescription() {
- return array(
- 'form' => 'The form to use.',
- 'target' => 'The target page.',
- 'query' => 'The query string.',
- 'preload' => 'The name of a page to preload'
- );
- }
-
- /**
- * Returns the description string for this module
- * @return mixed string or array of strings
- */
- function getDescription() {
- return <<<END
-This module is used to remotely create or edit pages using Semantic Forms.
-
-Add "template-name[field-name]=field-value" to the query string parameter, to set the value for a specific field.
-To set values for more than one field use "&", or rather its URL encoded version "%26": "template-name[field-name-1]=field-value-1%26template-name[field-name-2]=field-value-2".
-See the first example below.
-
-In addition to the query parameter, any parameter in the URL of the form "template-name[field-name]=field-value" will be treated as part of the query. See the second example.
-END;
- }
-
- /**
- * Returns usage examples for this module.
- * @return mixed string or array of strings
- */
- protected function getExamples() {
- return array(
- 'With query parameter: api.php?action=sfautoedit&form=form-name&target=page-name&query=template-name[field-name-1]=field-value-1%26template-name[field-name-2]=field-value-2',
- 'Without query parameter: api.php?action=sfautoedit&form=form-name&target=page-name&template-name[field-name-1]=field-value-1&template-name[field-name-2]=field-value-2'
- );
- }
-
- /**
- * Returns a string that identifies the version of the class.
- * Includes the class name, the svn revision, timestamp, and
- * last author.
- *
- * @return string
- */
- function getVersion() {
- global $sfgIP;
- $gitSha1 = SpecialVersion::getGitHeadSha1( $sfgIP );
- return __CLASS__ . '-' . SF_VERSION . ($gitSha1 !== false) ? ' (' . substr( $gitSha1, 0, 7 ) . ')' : '';
- }
-}
diff --git a/SemanticForms/includes/SF_CreatePageJob.php b/SemanticForms/includes/SF_CreatePageJob.php
deleted file mode 100644
index 3ab4634b..00000000
--- a/SemanticForms/includes/SF_CreatePageJob.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * Background job to create a new page, for use by the 'CreateClass' special
- * page.
- *
- * @author Yaron Koren
- * @ingroup SF
- */
-class SFCreatePageJob extends Job {
-
- function __construct( $title, $params = '', $id = 0 ) {
- parent::__construct( 'createPage', $title, $params, $id );
- }
-
- /**
- * Run a createPage job
- * @return boolean success
- */
- function run() {
- wfProfileIn( __METHOD__ );
-
- if ( is_null( $this->title ) ) {
- $this->error = "createPage: Invalid title";
- wfProfileOut( __METHOD__ );
- return false;
- }
- $article = new Article( $this->title, 0 );
- if ( !$article ) {
- $this->error = 'createPage: Article not found "' . $this->title->getPrefixedDBkey() . '"';
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $page_text = $this->params['page_text'];
- // change global $wgUser variable to the one
- // specified by the job only for the extent of this
- // replacement
- global $wgUser;
- $actual_user = $wgUser;
- $wgUser = User::newFromId( $this->params['user_id'] );
- $edit_summary = '';
- if( array_key_exists( 'edit_summary', $this->params ) ) {
- $edit_summary = $this->params['edit_summary'];
- }
- $article->doEdit( $page_text, $edit_summary );
- $wgUser = $actual_user;
- wfProfileOut( __METHOD__ );
- return true;
- }
-}
-
diff --git a/SemanticForms/includes/SF_Form.php b/SemanticForms/includes/SF_Form.php
deleted file mode 100644
index f74274af..00000000
--- a/SemanticForms/includes/SF_Form.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-
-/**
- * Represents a user-defined form.
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-class SFForm {
- private $mFormName;
- private $mPageNameFormula;
- private $mCreateTitle;
- private $mEditTitle;
- private $mAssociatedCategory;
- private $mItems;
-
- static function create( $formName, $items ) {
- $form = new SFForm();
- $form->mFormName = ucfirst( str_replace( '_', ' ', $formName ) );
- $form->mAssociatedCategory = null;
- $form->mItems = $items;
- return $form;
- }
-
- function getFormName() {
- return $this->mFormName;
- }
-
- function setPageNameFormula( $pageNameFormula ) {
- $this->mPageNameFormula = $pageNameFormula;
- }
-
- function setCreateTitle( $createTitle ) {
- $this->mCreateTitle = $createTitle;
- }
-
- function setEditTitle( $editTitle ) {
- $this->mEditTitle = $editTitle;
- }
-
- function setAssociatedCategory( $associatedCategory ) {
- $this->mAssociatedCategory = $associatedCategory;
- }
-
- function creationHTML() {
- $text = "";
- $template_count = 0; $section_count = 0;
- foreach ( $this->mItems as $item ) {
- if ( $item['type'] == 'template' ) {
- $template = $item['item'];
- $text .= $template->creationHTML( $template_count );
- $template_count++;
- } elseif ( $item['type'] == 'section' ) {
- $section = $item['item'];
- $text .= $section->creationHTML( $section_count );
- $section_count++;
- }
- }
-
- return $text;
- }
-
- function createMarkup( $standardInputs = array(), $freeTextLabel = null ) {
- $title = Title::makeTitle( SF_NS_FORM, $this->mFormName );
- $fs = SpecialPageFactory::getPage( 'FormStart' );
- $form_start_url = SFUtils::titleURLString( $fs->getTitle() ) . "/" . $title->getPartialURL();
- $form_description = wfMessage( 'sf_form_docu', $this->mFormName, $form_start_url )->inContentLanguage()->text();
- $form_input = "{{#forminput:form=" . $this->mFormName;
- if ( !is_null( $this->mAssociatedCategory ) ) {
- $form_input .= "|autocomplete on category=" . $this->mAssociatedCategory;
- }
- $form_input .= "}}\n";
- $text = <<<END
-<noinclude>
-$form_description
-
-
-$form_input
-</noinclude><includeonly>
-
-END;
- if ( !empty( $this->mPageNameFormula ) || !empty( $this->mCreateTitle ) || !empty( $this->mEditTitle ) ) {
- $text .= "{{{info";
- if ( !empty( $this->mPageNameFormula ) ) {
- $text .= "|page name=" . $this->mPageNameFormula;
- }
- if ( !empty( $this->mCreateTitle ) ) {
- $text .= "|create title=" . $this->mCreateTitle;
- }
- if ( !empty( $this->mEditTitle ) ) {
- $text .= "|edit title=" . $this->mEditTitle;
- }
- $text .= "}}}\n";
- }
- $text .= <<<END
-<div id="wikiPreview" style="display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;"></div>
-
-END;
- foreach ( $this->mItems as $item ) {
- if ( $item['type'] == 'template' ) {
- $template = $item['item'];
- $text .= $template->createMarkup() . "\n";
- } elseif ( $item['type'] == 'section' ) {
- $section = $item['item'];
- $text .= $section->createMarkup() . "\n";
- }
- }
-
- if ( is_null( $freeTextLabel ) ) {
- $freeTextLabel = wfMessage( 'sf_form_freetextlabel' )->inContentLanguage()->text();
- }
-
- // Add in standard inputs if they were specified.
- if ( count( $standardInputs ) > 0 ) {
- if ( array_key_exists( 'free text', $standardInputs ) ) {
- $text .= "'''$freeTextLabel:'''\n\n";
- $text .= $standardInputs['free text'] . "\n\n\n";
- }
- if ( array_key_exists( 'summary', $standardInputs ) ) {
- $text .= $standardInputs['summary'] . "\n\n";
- }
- if ( array_key_exists( 'minor edit', $standardInputs ) ) {
- $text .= $standardInputs['minor edit'] . ' ';
- }
- if ( array_key_exists( 'watch', $standardInputs ) ) {
- $text .= $standardInputs['watch'];
- }
- if ( array_key_exists( 'minor edit', $standardInputs ) || array_key_exists( 'watch', $standardInputs ) ) {
- $text .= "\n\n";
- }
- if ( array_key_exists( 'save', $standardInputs ) ) {
- $text .= $standardInputs['save'] . ' ';
- }
- if ( array_key_exists( 'preview', $standardInputs ) ) {
- $text .= $standardInputs['preview'] . ' ';
- }
- if ( array_key_exists( 'changes', $standardInputs ) ) {
- $text .= $standardInputs['changes'] . ' ';
- }
- if ( array_key_exists( 'cancel', $standardInputs ) ) {
- $text .= $standardInputs['cancel'];
- }
- } else {
- $text .= <<<END
-'''$freeTextLabel:'''
-
-{{{standard input|free text|rows=10}}}
-
-
-{{{standard input|summary}}}
-
-{{{standard input|minor edit}}} {{{standard input|watch}}}
-
-{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}
-END;
- }
- $text .= "\n</includeonly>\n";
-
- return $text;
- }
-
-}
diff --git a/SemanticForms/includes/SF_FormEditAction.php b/SemanticForms/includes/SF_FormEditAction.php
deleted file mode 100644
index f9fff7f9..00000000
--- a/SemanticForms/includes/SF_FormEditAction.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-/**
- * Handles the formedit action.
- *
- * @author Stephan Gambke
- * @file
- * @ingroup SF
- */
-
-class SFFormEditAction extends Action
-{
- /**
- * Return the name of the action this object responds to
- * @return String lowercase
- */
- public function getName(){
- return 'formedit';
- }
-
- /**
- * The main action entry point. Do all output for display and send it to the context
- * output. Do not use globals $wgOut, $wgRequest, etc, in implementations; use
- * $this->getOutput(), etc.
- * @throws ErrorPageError
- */
- public function show(){
- return self::displayForm($this, $this->page);
- }
-
- /**
- * Execute the action in a silent fashion: do not display anything or release any errors.
- * @return Bool whether execution was successful
- */
- public function execute(){
- return true;
- }
-
- /**
- * Adds an "action" (i.e., a tab) to edit the current article with
- * a form
- */
- static function displayTab( $obj, &$content_actions ) {
- if ( method_exists ( $obj, 'getTitle' ) ) {
- $title = $obj->getTitle();
- } else {
- $title = $obj->mTitle;
- }
- // Make sure that this is not a special page, and
- // that the user is allowed to edit it
- // - this function is almost never called on special pages,
- // but before SMW is fully initialized, it's called on
- // Special:SMWAdmin for some reason, which is why the
- // special-page check is there.
- if ( !isset( $title ) ||
- ( $title->getNamespace() == NS_SPECIAL ) ) {
- return true;
- }
-
- $form_names = SFFormLinker::getDefaultFormsForPage( $title );
- if ( count( $form_names ) == 0 ) {
- return true;
- }
-
- global $wgRequest;
- global $sfgRenameEditTabs, $sfgRenameMainEditTab;
-
- $user_can_edit = $title->userCan( 'edit' );
- // Create the form edit tab, and apply whatever changes are
- // specified by the edit-tab global variables.
- if ( $sfgRenameEditTabs ) {
- $form_edit_tab_text = $user_can_edit ? 'edit' : 'sf_viewform';
- if ( array_key_exists( 'edit', $content_actions ) ) {
- $msg = $user_can_edit ? 'sf_editsource' : 'viewsource';
- $content_actions['edit']['text'] = wfMessage( $msg )->text();
- }
- } else {
- if ( $user_can_edit ) {
- $form_edit_tab_text = $title->exists() ? 'formedit' : 'sf_formcreate';
- } else {
- $form_edit_tab_text = 'sf_viewform';
- }
- // Check for renaming of main edit tab only if
- // $sfgRenameEditTabs is off.
- if ( $sfgRenameMainEditTab ) {
- if ( array_key_exists( 'edit', $content_actions ) ) {
- $msg = $user_can_edit ? 'sf_editsource' : 'viewsource';
- $content_actions['edit']['text'] = wfMessage( $msg )->text();
- }
- }
- }
-
- $form_edit_tab_text = wfMessage( $form_edit_tab_text )->text();
- $class_name = ( $wgRequest->getVal( 'action' ) == 'formedit' ) ? 'selected' : '';
- $form_edit_tab = array(
- 'class' => $class_name,
- 'text' => $form_edit_tab_text,
- 'href' => $title->getLocalURL( 'action=formedit' )
- );
-
- // Find the location of the 'edit' tab, and add 'edit
- // with form' right before it.
- // This is a "key-safe" splice - it preserves both the keys
- // and the values of the array, by editing them separately
- // and then rebuilding the array. Based on the example at
- // http://us2.php.net/manual/en/function.array-splice.php#31234
- $tab_keys = array_keys( $content_actions );
- $tab_values = array_values( $content_actions );
- $edit_tab_location = array_search( 'edit', $tab_keys );
-
- // If there's no 'edit' tab, look for the 'view source' tab
- // instead.
- if ( $edit_tab_location == null ) {
- $edit_tab_location = array_search( 'viewsource', $tab_keys );
- }
-
- // This should rarely happen, but if there was no edit *or*
- // view source tab, set the location index to -1, so the
- // tab shows up near the end.
- if ( $edit_tab_location == null ) {
- $edit_tab_location = - 1;
- }
- array_splice( $tab_keys, $edit_tab_location, 0, 'form_edit' );
- array_splice( $tab_values, $edit_tab_location, 0, array( $form_edit_tab ) );
- $content_actions = array();
- for ( $i = 0; $i < count( $tab_keys ); $i++ ) {
- $content_actions[$tab_keys[$i]] = $tab_values[$i];
- }
-
- global $wgUser;
- if ( ! $wgUser->isAllowed( 'viewedittab' ) ) {
- // The tab can have either of these two actions.
- unset( $content_actions['edit'] );
- unset( $content_actions['viewsource'] );
- }
-
- return true; // always return true, in order not to stop MW's hook processing!
- }
-
- /**
- * Like displayTab(), but called with a different hook - this one is
- * called for the 'Vector' skin, and others.
- */
- static function displayTab2( $obj, &$links ) {
- // the old '$content_actions' array is thankfully just a
- // sub-array of this one
- return self::displayTab( $obj, $links['views'] );
- }
-
- /**
- * The function called if we're in index.php (as opposed to one of the
- * special pages)
- */
- static function displayForm( $action, $article ) {
- // @todo: This looks like bad code. If we can't find a form, we
- // should be showing an informative error page rather than
- // making it look like an edit form page does not exist.
- $title = $article->getTitle();
- $form_names = SFFormLinker::getDefaultFormsForPage( $title );
- if ( count( $form_names ) == 0 ) {
- return true;
- }
-
- $output = $action->getOutput();
-
- if ( count( $form_names ) > 1 ) {
- $warning_text = "\t" . '<div class="warningbox">' . wfMessage( 'sf_formedit_morethanoneform' )->text() . "</div>\n";
- $output->addWikiText( $warning_text );
- }
-
- $form_name = $form_names[0];
- $page_name = SFUtils::titleString( $title );
-
- SFFormEdit::printForm( $form_name, $page_name );
-
- return false;
- }
-}
diff --git a/SemanticForms/includes/SF_FormEditPage.php b/SemanticForms/includes/SF_FormEditPage.php
deleted file mode 100644
index a94993e0..00000000
--- a/SemanticForms/includes/SF_FormEditPage.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/**
- * Contains Form Edit Page inheriting from EditPage
- *
- * @author Daniel Friesen
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * Form Edit Page inheriting from EditPage
- * @ingroup SF
- */
-class SFFormEditPage extends EditPage {
-
- protected $form, $form_name;
-
- function __construct( $article, $form_name = '' ) {
- global $wgRequest;
- parent::__construct( $article );
- $this->action = 'formedit';
- $form_name = $wgRequest->getText( 'form', $form_name );
- $this->form = Title::makeTitleSafe( SF_NS_FORM, $form_name );
- $this->form_name = $form_name;
- }
-
- protected function isSectionEditSupported() {
- return false; // sections and forms don't mix
- }
-
- function setHeaders() {
- parent::setHeaders();
- global $wgOut;
- if ( !$this->isConflict ) {
- $wgOut->setPageTitle( wfMessage( 'sf_formedit_title',
- $this->form->getText(), $this->getContextTitle()->getPrefixedText() )->text() );
- }
- }
-
- protected function displayPreviewArea( $previewOutput, $isOnTop = false ) {
- if ( $this->textbox1 != null )
- parent::displayPreviewArea( $previewOutput );
- }
-
- protected function importContentFormData( &$request ) {
- // @todo This is where $request to save&preview page text should go
- }
-
- protected function showContentForm() {
- $target_title = $this->mArticle->getTitle();
- $target_name = SFUtils::titleString( $target_title );
- if ( $target_title->exists() ) {
- SFEditData::printEditForm( $this->form_name, $target_name, $this->textbox1 );
- } else {
- SFAddData::printAddForm( $this->form_name, $target_name, array(), $this->textbox1 );
- }
- // @todo This needs a proper form builder
- }
-
- function showFooter() {
- }
-}
diff --git a/SemanticForms/includes/SF_FormField.php b/SemanticForms/includes/SF_FormField.php
deleted file mode 100644
index 591d7eca..00000000
--- a/SemanticForms/includes/SF_FormField.php
+++ /dev/null
@@ -1,390 +0,0 @@
-<?php
-/**
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * This class is distinct from SFTemplateField in that it represents a template
- * field defined in a form definition - it contains a SFTemplateField object
- * within it (the $template_field variable), along with the other properties
- * for that field that are set within the form
- * @ingroup SF
- */
-class SFFormField {
- private $mNum;
- public $template_field;
- private $mInputType;
- private $mIsMandatory;
- private $mIsHidden;
- private $mIsRestricted;
- private $mPossibleValues;
- private $mIsList;
- // the following fields are not set by the form-creation page
- // (though they could be)
- private $mIsUploadable;
- private $mFieldArgs;
- private $mDescriptionArgs;
- // somewhat of a hack - these two fields are for a field in a specific
- // representation of a form, not the form definition; ideally these
- // should be contained in a third 'field' class, called something like
- // SFFormInstanceField, that holds these fields plus an instance of
- // SFFormField. Too much work?
- private $mInputName;
- private $mIsDisabled;
-
- static function create( $num, $template_field ) {
- $f = new SFFormField();
- $f->mNum = $num;
- $f->template_field = $template_field;
- $f->mInputType = null;
- $f->mIsMandatory = false;
- $f->mIsHidden = false;
- $f->mIsRestricted = false;
- $f->mIsUploadable = false;
- $f->mPossibleValues = null;
- $f->mFieldArgs = array();
- $f->mDescriptionArgs = array();
- return $f;
- }
-
- static function createFromDefinition( $fieldName, $inputName, $isMandatory, $isHidden, $isUploadable, $possibleValues, $isDisabled, $isList, $inputType, $fieldArgs, $allFields, $strictParsing ) {
- // See if this field matches one of the fields defined for this
- // template - if it is, use all available information about
- // that field; if it's not, either include it in the form or
- // not, depending on whether the template has a 'strict'
- // setting in the form definition.
- $the_field = null;
- foreach ( $allFields as $cur_field ) {
- if ( $fieldName == $cur_field->getFieldName() ) {
- $the_field = $cur_field;
- break;
- }
- }
- if ( $the_field == null ) {
- if ( $strictParsing ) {
- $dummy_ff = new SFFormField();
- $dummy_ff->template_field = new SFTemplateField();
- $dummy_ff->mIsList = false;
- return $dummy_ff;
- }
- $the_field = new SFTemplateField();
- }
-
- // create an SFFormField object, containing this field as well
- // as settings from the form definition file
- $f = new SFFormField();
- $f->template_field = $the_field;
- $f->mIsMandatory = $isMandatory;
- $f->mIsHidden = $isHidden;
- $f->mIsUploadable = $isUploadable;
- $f->mPossibleValues = $possibleValues;
- $f->mInputType = $inputType;
- $f->mFieldArgs = $fieldArgs;
- $f->mInputName = $inputName;
- $f->mIsDisabled = $isDisabled;
- $f->mIsList = $isList;
- $f->mAllFields = $allFields;
- return $f;
- }
-
- public function getTemplateField() {
- return $this->template_field;
- }
-
- public function getInputType() {
- return $this->mInputType;
- }
-
- public function isMandatory() {
- return $this->mIsMandatory;
- }
-
- public function isHidden() {
- return $this->mIsHidden;
- }
-
- public function isList() {
- return $this->mIsList;
- }
-
- public function getInputName() {
- return $this->mInputName;
- }
-
- public function isDisabled() {
- return $this->mIsDisabled;
- }
-
- public function setTemplateField( $templateField ) {
- $this->template_field = $templateField;
- }
-
- public function setInputType( $inputType ) {
- $this->mInputType = $inputType;
- }
-
- public function setIsMandatory( $isMandatory ) {
- $this->mIsMandatory = $isMandatory;
- }
-
- public function setIsHidden( $isHidden ) {
- $this->mIsHidden = $isHidden;
- }
-
- public function setIsRestricted( $isRestricted ) {
- $this->mIsRestricted = $isRestricted;
- }
-
- public function setFieldArg( $key, $value ) {
- $this->mFieldArgs[$key] = $value;
- }
-
- public function setDescriptionArg( $key, $value ) {
- $this->mDescriptionArgs[$key] = $value;
- }
-
- function inputTypeDropdownHTML( $field_form_text, $default_input_type, $possible_input_types, $cur_input_type ) {
- if ( !is_null( $default_input_type ) ) {
- array_unshift( $possible_input_types, $default_input_type );
- }
- // create the dropdown HTML for a list of possible input types
- $dropdownHTML = "";
- foreach ( $possible_input_types as $i => $input_type ) {
- if ( $i == 0 ) {
- $dropdownHTML .= " <option value=\".$input_type\">$input_type " .
- wfMessage( 'sf_createform_inputtypedefault' )->escaped() . "</option>\n";
- } else {
- $selected_str = ( $cur_input_type == $input_type ) ? "selected" : "";
- $dropdownHTML .= " <option value=\"$input_type\" $selected_str>$input_type</option>\n";
- }
- }
- $hidden_text = wfMessage( 'sf_createform_hidden' )->escaped();
- $selected_str = ( $cur_input_type == 'hidden' ) ? "selected" : "";
- // @todo FIXME: Contains hard coded parentheses.
- $dropdownHTML .= " <option value=\"hidden\" $selected_str>($hidden_text)</option>\n";
- $text = "\t" . Html::rawElement( 'select',
- array(
- 'class' => 'inputTypeSelector',
- 'name' => 'input_type_' . $field_form_text,
- 'formfieldid' => $field_form_text
- ), $dropdownHTML ) . "\n";
- return $text;
- }
-
- function creationHTML( $template_num ) {
- $field_form_text = $template_num . "_" . $this->mNum;
- $template_field = $this->template_field;
- $text = '<h3>' . wfMessage( 'sf_createform_field' )->escaped() . " '" . $template_field->getFieldName() . "'</h3>\n";
- $prop_link_text = SFUtils::linkText( SMW_NS_PROPERTY, $template_field->getSemanticProperty() );
- // TODO - remove this probably-unnecessary check?
- if ( $template_field->getSemanticProperty() == "" ) {
- // Print nothing if there's no semantic property.
- } elseif ( $template_field->getPropertyType() == "" ) {
- $text .= '<p>' . wfMessage( 'sf_createform_fieldpropunknowntype', $prop_link_text )->parseAsBlock() . "</p>\n";
- } else {
- if ( $template_field->isList() ) {
- $propDisplayMsg = 'sf_createform_fieldproplist';
- } else {
- $propDisplayMsg = 'sf_createform_fieldprop';
- }
-
- // Get the display label for this property type.
- global $smwgContLang;
- $propertyTypeStr = '';
- if ( $smwgContLang != null ) {
- $datatypeLabels = $smwgContLang->getDatatypeLabels();
- $datatypeLabels['enumeration'] = 'enumeration';
-
- $propTypeID = $template_field->getPropertyType();
-
- // Special handling for SMW 1.9
- if ( $propTypeID == '_str' && !array_key_exists( '_str', $datatypeLabels ) ) {
- $propTypeID = '_txt';
- }
- $propertyTypeStr = $datatypeLabels[$propTypeID];
- }
- $text .= Html::rawElement( 'p', null, wfMessage( $propDisplayMsg, $prop_link_text, $propertyTypeStr )->parse() ) . "\n";
- }
- // If it's not a semantic field - don't add any text.
- $form_label_text = wfMessage( 'sf_createform_formlabel' )->text();
- $form_label_input = Html::input(
- 'label_' . $field_form_text,
- $template_field->getLabel(),
- 'text',
- array( 'size' => 20 )
- );
- $input_type_text = wfMessage( 'sf_createform_inputtype' )->escaped();
- $text .= <<<END
- <div class="formField">
- <p>$form_label_text $form_label_input
- &#160; $input_type_text
-
-END;
- global $sfgFormPrinter;
- if ( is_null( $template_field->getPropertyType() ) ) {
- $default_input_type = null;
- $possible_input_types = $sfgFormPrinter->getAllInputTypes();
- } else {
- $default_input_type = $sfgFormPrinter->getDefaultInputType( $template_field->isList(), $template_field->getPropertyType() );
- $possible_input_types = $sfgFormPrinter->getPossibleInputTypes( $template_field->isList(), $template_field->getPropertyType() );
- }
- $text .= $this->inputTypeDropdownHTML( $field_form_text, $default_input_type, $possible_input_types, $template_field->getInputType() );
-
- if ( !is_null( $template_field->getInputType() ) ) {
- $cur_input_type = $template_field->getInputType();
- } elseif ( !is_null( $default_input_type ) ) {
- $cur_input_type = $default_input_type;
- } else {
- $cur_input_type = $possible_input_types[0];
- }
-
- global $wgRequest;
- $paramValues = array();
- foreach ( $wgRequest->getValues() as $key => $value ) {
- if ( ( $pos = strpos( $key, '_' . $field_form_text ) ) != false ) {
- $paramName = substr( $key, 0, $pos );
- // Spaces got replaced by underlines in the
- // query.
- $paramName = str_replace( '_', ' ', $paramName );
- $paramValues[$paramName] = $value;
- }
- }
-
- $other_param_text = wfMessage( 'sf_createform_otherparameters' )->escaped();
- $text .= "<fieldset class=\"sfCollapsibleFieldset\"><legend>$other_param_text</legend>\n";
- $text .= Html::rawElement( 'div', array( 'class' => 'otherInputParams' ),
- SFCreateForm::showInputTypeOptions( $cur_input_type, $field_form_text, $paramValues ) ) . "\n";
- $text .= "</fieldset>\n";
- $text .= <<<END
- </p>
- </div>
- <hr>
-
-END;
- return $text;
- }
-
- // for now, HTML of an individual field depends on whether or not it's
- // part of multiple-instance template; this may change if handling of
- // such templates in form definitions gets more sophisticated
- function createMarkup( $part_of_multiple, $is_last_field_in_template ) {
- $text = "";
- $descPlaceholder = "";
- $textBeforeField = "";
-
- if ( array_key_exists( "Description", $this->mDescriptionArgs ) ) {
- $fieldDesc = $this->mDescriptionArgs['Description'];
- if ( $fieldDesc != '' ) {
- if ( isset( $this->mDescriptionArgs['DescriptionTooltipMode'] ) ) {
- $descPlaceholder = " {{#info:$fieldDesc}}";
- } else {
- $descPlaceholder = '<br><p class="sfFieldDescription" style="font-size:0.7em; color:gray;">' . $fieldDesc . '</p>';
- }
- }
- }
-
- if ( array_key_exists( "TextBeforeField", $this->mDescriptionArgs ) ) {
- $textBeforeField = $this->mDescriptionArgs['TextBeforeField'];
- }
-
- $fieldLabel = $this->template_field->getLabel();
- if ( $textBeforeField != '' ) {
- $fieldLabel = $textBeforeField . ' ' . $fieldLabel;
- }
-
- if ( $part_of_multiple ) {
- $text .= "'''$fieldLabel:''' $descPlaceholder";
- } else {
- $text .= "! $fieldLabel: $descPlaceholder\n";
- }
-
- if ( ! $part_of_multiple ) { $text .= "| "; }
- $text .= "{{{field|" . $this->template_field->getFieldName();
- // TODO - why is there an input type field in both the form
- // field and the template field? One of them should probably
- // be removed.
- if ( $this->mIsHidden ) {
- $text .= "|hidden";
- } elseif ( !is_null( $this->getInputType() ) ) {
- $text .= "|input type=" . $this->getInputType();
- } elseif ( $this->template_field->getInputType() != '' ) {
- $text .= "|input type=" . $this->template_field->getInputType();
- }
- foreach ( $this->mFieldArgs as $arg => $value ) {
- if ( $value === true ) {
- $text .= "|$arg";
- } else {
- $text .= "|$arg=$value";
- }
- }
- if ( $this->mIsMandatory ) {
- $text .= "|mandatory";
- } elseif ( $this->mIsRestricted ) {
- $text .= "|restricted";
- }
- $text .= "}}}\n";
- if ( $part_of_multiple ) {
- $text .= "\n";
- } elseif ( ! $is_last_field_in_template ) {
- $text .= "|-\n";
- }
- return $text;
- }
-
- /**
- * Since Semantic Forms uses a hook system for the functions that
- * create HTML inputs, most arguments are contained in the "$other_args"
- * array - create this array, using the attributes of this form
- * field and the template field it corresponds to, if any
- */
- function getArgumentsForInputCall( $default_args = null ) {
- // start with the arguments array already defined
- $other_args = $this->mFieldArgs;
- // a value defined for the form field should always supersede
- // the coresponding value for the template field
- if ( $this->mPossibleValues != null ) {
- $other_args['possible_values'] = $this->mPossibleValues;
- } else {
- $other_args['possible_values'] = $this->template_field->getPossibleValues();
- $other_args['value_labels'] = $this->template_field->getValueLabels();
- }
- $other_args['is_list'] = ( $this->mIsList || $this->template_field->isList() );
- if ( $this->template_field->getSemanticProperty() !== '' &&
- ! array_key_exists( 'semantic_property', $other_args ) ) {
- $other_args['semantic_property'] = $this->template_field->getSemanticProperty();
- $other_args['property_type'] = $this->template_field->getPropertyType();
- }
- // If autocompletion hasn't already been hardcoded in the form,
- // and it's a property of type page, or a property of another
- // type with 'autocomplete' specified, set the necessary
- // parameters.
- if ( ! array_key_exists( 'autocompletion source', $other_args ) ) {
- if ( $this->template_field->getPropertyType() == '_wpg' ) {
- $other_args['autocompletion source'] = $this->template_field->getSemanticProperty();
- $other_args['autocomplete field type'] = 'property';
- } elseif ( array_key_exists( 'autocomplete', $other_args ) || array_key_exists( 'remote autocompletion', $other_args ) ) {
- $other_args['autocompletion source'] = $this->template_field->getSemanticProperty();
- $other_args['autocomplete field type'] = 'property';
- }
- }
- // Now merge in the default values set by SFFormPrinter, if
- // there were any - put the default values first, so that if
- // there's a conflict they'll be overridden.
- if ( $default_args != null ) {
- $other_args = array_merge( $default_args, $other_args );
- }
-
- global $wgParser;
- foreach ( $other_args as $argname => $argvalue ) {
-
- if ( is_string( $argvalue ) ) {
- $other_args[$argname] =
- $wgParser->recursiveTagParse( $argvalue );
- }
- }
-
- return $other_args;
- }
-}
diff --git a/SemanticForms/includes/SF_FormLinker.php b/SemanticForms/includes/SF_FormLinker.php
deleted file mode 100644
index 8aa273d8..00000000
--- a/SemanticForms/includes/SF_FormLinker.php
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-/**
- * Gets the form(s) used to edit a page, both for existing pages and for
- * not-yet-created, red-linked pages. This class uses its own in-memory
- * caching to try to minimize the number of calls to the Semantic
- * MediaWiki data store.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-class SFFormLinker {
- const DEFAULT_FORM = 1;
- const ALTERNATE_FORM = 2;
- const PAGE_DEFAULT_FORM = 3;
- const AUTO_CREATE_FORM = 4;
-
- // An in-memory cache of data already retrieved for the current page.
- static $mLinkedForms = array();
- static $mLinkedPages = array();
- static $mLinkedPagesRetrieved = false;
-
- /**
- * Gets the set of all properties that point to this page, anywhere
- * in the wiki.
- */
- static function getIncomingProperties( $title ) {
- $store = SFUtils::getSMWStore();
- $value = SMWDIWikiPage::newFromTitle( $title );
- $properties = $store->getInProperties( $value );
- $propertyNames = array();
- foreach ( $properties as $property ) {
- $property_name = $property->getKey();
- if ( !empty( $property_name ) ) {
- $propertyNames[] = $property_name;
- }
- }
- return $propertyNames;
- }
-
- /**
- * Gets the properties pointing from the current page to this one.
- */
- static function getPagePropertiesOfPage( $title ) {
- if ( self::$mLinkedPagesRetrieved ) {
- return;
- }
-
- $store = SFUtils::getSMWStore();
- if ( class_exists( 'SMWDataItem' ) ) {
- $value = SMWDIWikiPage::newFromTitle( $title );
- } else {
- $value = $title;
- }
- $data = $store->getSemanticData( $value );
- foreach ( $data->getProperties() as $property ) {
- $propertyValues = $data->getPropertyValues( $property );
- foreach ( $propertyValues as $propertyValue ) {
- $propertyName = null;
- $linkedPageName = null;
- if ( $propertyValue instanceof SMWDIWikiPage ) {
- $propertyName = $property->getKey();
- $linkedPageName = $propertyValue->getDBkey();
- } elseif ( $propertyValue instanceof SMWWikiPageValue ) {
- $propertyName = $property->getWikiValue();
- $linkedPageName = $propertyValue->getWikiValue();
- }
- // Needed for SMW 1.7 (?)
- $linkedPageName = str_replace( '_', ' ', $linkedPageName );
- if ( !is_null( $linkedPageName ) ) {
- if ( array_key_exists( $linkedPageName, self::$mLinkedPages ) ) {
- self::$mLinkedPages[$linkedPageName][] = $propertyName;
- } else {
- self::$mLinkedPages[$linkedPageName] = array( $propertyName );
- }
- }
- }
- }
- self::$mLinkedPagesRetrieved = true;
- }
-
- /**
- * Gets the forms specified, if any, of either type "default form",
- * "alternate form", or "default form for page", for a specific page
- * (which should be a category, property, or namespace page)
- */
- static function getFormsThatPagePointsTo( $page_name, $page_namespace, $form_connection_type ) {
- if ( $page_name == NULL ) {
- return array();
- }
-
- // Check if we've already gotten the set of forms for this
- // combination of page and "form connection type" (default,
- // alternate or "creates pages with"). If so, use that -
- // otherwise, prepare the array so that we can add this
- // data to it.
- $page_key = "$page_namespace:$page_name";
- if ( array_key_exists( $page_key, self::$mLinkedForms ) ) {
- if ( array_key_exists( $form_connection_type, self::$mLinkedForms[$page_key] ) ) {
- return self::$mLinkedForms[$page_key][$form_connection_type];
- } else {
- // Do nothing - an entry with this key will
- // be added at the end of this method.
- }
- } else {
- self::$mLinkedForms[$page_key] = array();
- }
-
- if ( $form_connection_type == self::DEFAULT_FORM ) {
- $prop_smw_id = '_SF_DF';
- $backup_prop_smw_id = '_SF_DF_BACKUP';
- } elseif ( $form_connection_type == self::ALTERNATE_FORM ) {
- $prop_smw_id = '_SF_AF';
- $backup_prop_smw_id = '_SF_AF_BACKUP';
- } elseif ( $form_connection_type == self::PAGE_DEFAULT_FORM ) {
- $prop_smw_id = '_SF_PDF';
- $backup_prop_smw_id = '_SF_PDF_BACKUP';
- } elseif ( $form_connection_type == self::AUTO_CREATE_FORM ) {
- $prop_smw_id = '_SF_CP';
- $backup_prop_smw_id = '_SF_CP_BACKUP';
- } else {
- return array();
- }
-
- global $sfgContLang;
-
- $store = SFUtils::getSMWStore();
- $subject = Title::makeTitleSafe( $page_namespace, $page_name );
- $form_names = SFUtils::getSMWPropertyValues( $store, $subject, $prop_smw_id );
-
- // If we're using a non-English language, check for the English
- // string as well.
- if ( ! class_exists( 'SF_LanguageEn' ) || ! $sfgContLang instanceof SF_LanguageEn ) {
- $backup_form_names = SFUtils::getSMWPropertyValues( $store, $subject, $backup_prop_smw_id );
- $form_names = array_merge( $form_names, $backup_form_names );
- }
- // Add this data to the "cache".
- self::$mLinkedForms[$page_key][$form_connection_type] = $form_names;
- return $form_names;
- }
-
- /**
- * Automatically creates a page that's red-linked from the page being
- * viewed, if there's a property pointing from anywhere to that page
- * that's defined with the 'Creates pages with form' special property
- */
- static function createLinkedPage( $title, $incoming_properties ) {
- // if we're in a 'special' page, just exit - this is to prevent
- // constant additions being made from the 'Special:RecentChanges'
- // page, which shows pages that were previously deleted as red
- // links, even if they've since been recreated. The same might
- // hold true for other special pages.
- global $wgTitle;
- if ( empty( $wgTitle ) )
- return false;
- if ( $wgTitle->getNamespace() == NS_SPECIAL )
- return false;
-
- foreach ( $incoming_properties as $property_name ) {
- $auto_create_forms = self::getFormsThatPagePointsTo( $property_name, SMW_NS_PROPERTY, self::AUTO_CREATE_FORM );
- if ( count( $auto_create_forms ) > 0 ) {
- global $sfgFormPrinter;
- $form_name = $auto_create_forms[0];
- $form_title = Title::makeTitleSafe( SF_NS_FORM, $form_name );
- $form_definition = SFUtils::getPageText( $form_title );
- $preloadContent = null;
-
- // Allow outside code to set/change the
- // preloaded text.
- wfRunHooks( 'sfEditFormPreloadText', array( &$preloadContent, $title, $form_title ) );
-
- list ( $form_text, $javascript_text, $data_text, $form_page_title, $generated_page_name ) =
- $sfgFormPrinter->formHTML( $form_definition, false, false, null, $preloadContent, 'Some very long page name that will hopefully never get created ABCDEF123', null );
- $params = array();
-
- // Get user "responsible" for all auto-generated
- // pages from red links.
- $userID = 1;
- global $sfgAutoCreateUser;
- if ( !is_null( $sfgAutoCreateUser ) ) {
- $user = User::newFromName( $sfgAutoCreateUser );
- if ( !is_null( $user ) ) {
- $userID = $user->getId();
- }
- }
- $params['user_id'] = $userID;
- $params['page_text'] = $data_text;
- $job = new SFCreatePageJob( $title, $params );
- Job::batchInsert( array( $job ) );
-
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Helper function for formEditLink() - gets the 'default form' and
- * 'alternate form' properties for a page, and creates the
- * corresponding Special:FormEdit link, if any such properties are
- * defined
- */
- static function getFormEditLinkForPage( $target_page_title, $page_name, $page_namespace ) {
- $default_forms = self::getFormsThatPagePointsTo( $page_name, $page_namespace, self::DEFAULT_FORM );
- $alt_forms = self::getFormsThatPagePointsTo( $page_name, $page_namespace, self::ALTERNATE_FORM );
-
- if ( ( count( $default_forms ) == 0 ) && ( count( $alt_forms ) == 0 ) ) {
- return null;
- }
-
- $fe = SpecialPageFactory::getPage( 'FormEdit' );
-
- $fe_url = $fe->getTitle()->getLocalURL();
- if ( count( $default_forms ) > 0 ) {
- $form_edit_url = $fe_url . "/" . $default_forms[0] . "/" . SFUtils::titleURLString( $target_page_title );
- } else {
- $form_edit_url = $fe_url;
- $form_edit_url .= ( strpos( $form_edit_url, "?" ) ) ? "&" : "?";
- $form_edit_url .= 'target=' . urlencode( SFUtils::titleString( $target_page_title ) );
- }
- foreach ( $alt_forms as $i => $alt_form ) {
- $form_edit_url .= ( strpos( $form_edit_url, "?" ) ) ? "&" : "?";
- $form_edit_url .= "alt_form[$i]=$alt_form";
- }
- // Add "redlink=1" to the query string, so that the user will
- // go to the actual page if it now exists.
- $form_edit_url .= ( strpos( $form_edit_url, "?" ) ) ? "&" : "?";
- $form_edit_url .= "redlink=1";
- return $form_edit_url;
- }
-
- /**
- * Returns the URL for the Special:FormEdit page for a specific page,
- * given its default and alternate form(s) - we can't just point to
- * '&action=formedit', because that one doesn't reflect alternate forms
- */
- static function formEditLink( $title, $incoming_properties ) {
- // Get all properties pointing to this page, and if
- // getFormEditLinkForPage() returns a value with any of
- // them, return that.
-
- foreach ( $incoming_properties as $property_name ) {
- if ( $form_edit_link = self::getFormEditLinkForPage( $title, $property_name, SMW_NS_PROPERTY ) ) {
- return $form_edit_link;
- }
- }
-
- // If that didn't work, check if this page's namespace
- // has a default form specified.
- $namespace_name = $title->getNsText();
- if ( '' === $namespace_name ) {
- // If it's in the main (blank) namespace, check for the
- // file named with the word for "Main" in this language.
- $namespace_name = wfMessage( 'sf_blank_namespace' )->inContentLanguage()->text();
- }
- if ( $form_edit_link = self::getFormEditLinkForPage( $title, $namespace_name, NS_PROJECT ) ) {
- return $form_edit_link;
- }
- // If nothing found still, return null.
- return null;
- }
-
- /**
- * Sets the URL for form-based creation of a nonexistent (broken-linked,
- * AKA red-linked) page
- */
- static function setBrokenLink( $linker, $target, $options, $text, &$attribs, &$ret ) {
- // If it's not a broken (red) link, exit.
- if ( !in_array( 'broken', $options ) ) {
- return true;
- }
- // If the link is to a special page, exit.
- if ( $target->getNamespace() == NS_SPECIAL ) {
- return true;
- }
-
- global $sfgRedLinksCheckOnlyLocalProps;
- if ( $sfgRedLinksCheckOnlyLocalProps ) {
- $incoming_properties = array();
- global $wgTitle;
- // If this is called from the command line, $wgTitle
- // might not have been set.
- if ( !is_null( $wgTitle ) ) {
- self::getPagePropertiesOfPage( $wgTitle );
- $targetName = $target->getText();
- if ( array_key_exists( $targetName, self::$mLinkedPages ) ) {
- $incoming_properties = self::$mLinkedPages[$targetName];
- }
- }
- } else {
- $incoming_properties = self::getIncomingProperties( $target );
- }
- self::createLinkedPage( $target, $incoming_properties );
- $link = self::formEditLink( $target, $incoming_properties );
- if ( !is_null( $link ) ) {
- $attribs['href'] = $link;
- }
- return true;
- }
-
- /**
- * Get the form(s) used to edit this page - either:
- * - the default form(s) for the page itself, if there are any; or
- * - the default form(s) for a category that this article belongs to,
- * if there are any; or
- * - the default form(s) for the article's namespace, if there are any.
- */
- static function getDefaultFormsForPage( $title ) {
- // See if the page itself has a default form (or forms), and
- // return it/them if so.
- $default_forms = self::getFormsThatPagePointsTo( $title->getText(), $title->getNamespace(), self::PAGE_DEFAULT_FORM );
- if ( count( $default_forms ) > 0 ) {
- return $default_forms;
- }
- // If this is not a category page, look for a default form
- // for its parent category or categories.
- $namespace = $title->getNamespace();
- if ( NS_CATEGORY !== $namespace ) {
- $default_forms = array();
- $categories = SFUtils::getCategoriesForPage( $title );
- foreach ( $categories as $category ) {
- if ( class_exists( 'PSSchema' ) ) {
- // Check the Page Schema, if one exists.
- $psSchema = new PSSchema( $category );
- if ( $psSchema->isPSDefined() ) {
- $formName = SFPageSchemas::getFormName( $psSchema );
- if ( !is_null( $formName ) ) {
- $default_forms[] = $formName;
- }
- }
- }
- $default_forms = array_merge( $default_forms, self::getFormsThatPagePointsTo( $category, NS_CATEGORY, self::DEFAULT_FORM ) );
- }
- if ( count( $default_forms ) > 0 ) {
- return $default_forms;
- }
- }
-
- // All that's left is checking for the namespace. If this is
- // a subpage, exit out - default forms for namespaces don't
- // apply to subpages.
- if ( $title->isSubpage() ) {
- return array();
- }
-
- // If we're still here, just return the default form for the
- // namespace, which may well be null.
- if ( NS_MAIN === $namespace ) {
- // If it's in the main (blank) namespace, check for the
- // file named with the word for "Main" in this language.
- $namespace_label = wfMessage( 'sf_blank_namespace' )->inContentLanguage()->text();
- } else {
- global $wgContLang;
- $namespace_labels = $wgContLang->getNamespaces();
- $namespace_label = $namespace_labels[$namespace];
- }
- $default_forms = self::getFormsThatPagePointsTo( $namespace_label, NS_PROJECT, self::DEFAULT_FORM );
- return $default_forms;
- }
-}
diff --git a/SemanticForms/includes/SF_FormPrinter.php b/SemanticForms/includes/SF_FormPrinter.php
deleted file mode 100644
index cfb712f0..00000000
--- a/SemanticForms/includes/SF_FormPrinter.php
+++ /dev/null
@@ -1,1861 +0,0 @@
-<?php
-/**
- * Handles the creation and running of a user-created form.
- *
- * @author Yaron Koren
- * @author Nils Oppermann
- * @author Jeffrey Stuckman
- * @author Harold Solbrig
- * @author Daniel Hansch
- * @author Stephan Gambke
- * @author LY Meng
- * @file
- * @ingroup SF
- */
-
-class SFFormPrinter {
-
- public $mSemanticTypeHooks;
- public $mInputTypeHooks;
- public $standardInputsIncluded;
- public $mPageTitle;
-
- public function __construct() {
- // Initialize variables.
- $this->mSemanticTypeHooks = array();
- $this->mInputTypeHooks = array();
- $this->mInputTypeClasses = array();
- $this->mDefaultInputForPropType = array();
- $this->mDefaultInputForPropTypeList = array();
- $this->mPossibleInputsForPropType = array();
- $this->mPossibleInputsForPropTypeList = array();
-
- $this->standardInputsIncluded = false;
-
- $this->registerInputType( 'SFTextInput' );
- $this->registerInputType( 'SFTextWithAutocompleteInput' );
- $this->registerInputType( 'SFTextAreaInput' );
- $this->registerInputType( 'SFTextAreaWithAutocompleteInput' );
- $this->registerInputType( 'SFDateInput' );
- $this->registerInputType( 'SFDateTimeInput' );
- $this->registerInputType( 'SFYearInput' );
- $this->registerInputType( 'SFCheckboxInput' );
- $this->registerInputType( 'SFDropdownInput' );
- $this->registerInputType( 'SFRadioButtonInput' );
- $this->registerInputType( 'SFCheckboxesInput' );
- $this->registerInputType( 'SFListBoxInput' );
- $this->registerInputType( 'SFComboBoxInput' );
- $this->registerInputType( 'SFTreeInput' );
- $this->registerInputType( 'SFCategoryInput' );
- $this->registerInputType( 'SFCategoriesInput' );
- $this->registerInputType( 'SFTokensInput' );
-
- // All-purpose setup hook.
- wfRunHooks( 'sfFormPrinterSetup', array( $this ) );
- }
-
- public function setSemanticTypeHook( $type, $is_list, $function_name, $default_args ) {
- $this->mSemanticTypeHooks[$type][$is_list] = array( $function_name, $default_args );
- }
-
- public function setInputTypeHook( $input_type, $function_name, $default_args ) {
- $this->mInputTypeHooks[$input_type] = array( $function_name, $default_args );
- }
-
- /**
- * Register all information about the passed-in form input class.
- *
- * @param Class $inputTypeClass The class representing the new input.
- * Must be derived from SFFormInput.
- */
- public function registerInputType( $inputTypeClass ) {
- $inputTypeName = call_user_func( array( $inputTypeClass, 'getName' ) );
- $this->mInputTypeClasses[$inputTypeName] = $inputTypeClass;
- $this->setInputTypeHook( $inputTypeName, array( $inputTypeClass, 'getHTML' ), array() );
-
- $defaultProperties = call_user_func( array( $inputTypeClass, 'getDefaultPropTypes' ) );
- foreach ( $defaultProperties as $propertyType => $additionalValues ) {
- $this->setSemanticTypeHook( $propertyType, false, array( $inputTypeClass, 'getHTML' ), $additionalValues );
- $this->mDefaultInputForPropType[$propertyType] = $inputTypeName;
- }
- $defaultPropertyLists = call_user_func( array( $inputTypeClass, 'getDefaultPropTypeLists' ) );
- foreach ( $defaultPropertyLists as $propertyType => $additionalValues ) {
- $this->setSemanticTypeHook( $propertyType, true, array( $inputTypeClass, 'getHTML' ), $additionalValues );
- $this->mDefaultInputForPropTypeList[$propertyType] = $inputTypeName;
- }
-
- $otherProperties = call_user_func( array( $inputTypeClass, 'getOtherPropTypesHandled' ) );
- foreach ( $otherProperties as $propertyTypeID ) {
- if ( array_key_exists( $propertyTypeID, $this->mPossibleInputsForPropType ) ) {
- $this->mPossibleInputsForPropType[$propertyTypeID][] = $inputTypeName;
- } else {
- $this->mPossibleInputsForPropType[$propertyTypeID] = array( $inputTypeName );
- }
- }
- $otherPropertyLists = call_user_func( array( $inputTypeClass, 'getOtherPropTypeListsHandled' ) );
- foreach ( $otherPropertyLists as $propertyTypeID ) {
- if ( array_key_exists( $propertyTypeID, $this->mPossibleInputsForPropTypeList ) ) {
- $this->mPossibleInputsForPropTypeList[$propertyTypeID][] = $inputTypeName;
- } else {
- $this->mPossibleInputsForPropTypeList[$propertyTypeID] = array( $inputTypeName );
- }
- }
-
- // FIXME: No need to register these functions explicitly. Instead
- // formFieldHTML should call $someInput -> getJsInitFunctionData() and
- // store its return value. formHTML should at some (late) point use the
- // stored data.
-// $initJSFunction = call_user_func( array( $inputTypeClass, 'getJsInitFunctionData' ) );
-// if ( !is_null( $initJSFunction ) ) {
-// $sfgInitJSFunctions[] = $initJSFunction;
-// }
-//
-// $validationJSFunctions = call_user_func( array( $inputTypeClass, 'getJsValidationFunctionData' ) );
-// if ( count( $validationJSFunctions ) > 0 ) {
-// $sfgValidationJSFunctions = array_merge( $sfgValidationJSFunctions, $initJSFunction );
-// }
- }
-
- public function getInputType( $inputTypeName ) {
- if ( array_key_exists( $inputTypeName, $this->mInputTypeClasses ) ) {
- return $this->mInputTypeClasses[$inputTypeName];
- } else {
- return null;
- }
- }
-
- public function getDefaultInputType( $isList, $propertyType ) {
- if ( $isList ) {
- if ( array_key_exists( $propertyType, $this->mDefaultInputForPropTypeList ) ) {
- return $this->mDefaultInputForPropTypeList[$propertyType];
- } else {
- return null;
- }
- } else {
- if ( array_key_exists( $propertyType, $this->mDefaultInputForPropType ) ) {
- return $this->mDefaultInputForPropType[$propertyType];
- } else {
- return null;
- }
- }
- }
-
- public function getPossibleInputTypes( $isList, $propertyType ) {
- if ( $isList ) {
- if ( array_key_exists( $propertyType, $this->mPossibleInputsForPropTypeList ) ) {
- return $this->mPossibleInputsForPropTypeList[$propertyType];
- } else {
- return array();
- }
- } else {
- if ( array_key_exists( $propertyType, $this->mPossibleInputsForPropType ) ) {
- return $this->mPossibleInputsForPropType[$propertyType];
- } else {
- return array();
- }
- }
- }
-
- public function getAllInputTypes() {
- return array_keys( $this->mInputTypeClasses );
- }
-
- /**
- * Show the set of previous deletions for the page being edited.
- */
- function showDeletionLog( $out ) {
- LogEventsList::showLogExtract( $out, 'delete', $this->mPageTitle->getPrefixedText(),
- '', array( 'lim' => 10,
- 'conds' => array( "log_action != 'revision'" ),
- 'showIfEmpty' => false,
- 'msgKey' => array( 'moveddeleted-notice' ) )
- );
- return true;
- }
-
- /**
- * Like PHP's str_replace(), but only replaces the first found
- * instance - unfortunately, str_replace() doesn't allow for that.
- * This code is basically copied directly from
- * http://www.php.net/manual/en/function.str-replace.php#86177
- * - this might make sense in the SFUtils class, if it's useful in
- * other places.
- */
- function strReplaceFirst( $search, $replace, $subject ) {
- $firstChar = strpos( $subject, $search );
- if ( $firstChar !== false ) {
- $beforeStr = substr( $subject, 0, $firstChar );
- $afterStr = substr( $subject, $firstChar + strlen( $search ) );
- return $beforeStr . $replace . $afterStr;
- } else {
- return $subject;
- }
- }
-
- static function placeholderFormat( $templateName, $fieldName ) {
- return $templateName . '___' . $fieldName;
- }
-
- static function makePlaceholderInWikiText( $str ) {
- return '@replace_' . $str . '@';
- }
-
- static function makePlaceholderInFormHTML( $str ) {
- return '@insertHTML_' . $str . '@';
- }
-
- /**
- * Creates the HTML for the inner table for every instance of a
- * multiple-instance template in the form.
- */
- function multipleTemplateInstanceTableHTML( $form_is_disabled, $mainText ) {
- global $sfgScriptPath;
-
- if ( $form_is_disabled ) {
- $addAboveButton = $removeButton = $rearranger = '';
- } else {
- $addAboveButton = Html::element( 'a', array( 'class' => "addAboveButton", 'title' => wfMessage( 'sf_formedit_addanotherabove' )->text() ) );
- $removeButton = Html::element( 'a', array( 'class' => "removeButton", 'title' => wfMessage( 'sf_formedit_remove' )->text() ) );
- $rearranger = Html::element( 'img', array( 'src' => "$sfgScriptPath/skins/rearranger.png", 'class' => "rearrangerImage" ) );
- }
-
- $text = <<<END
- <table>
- <tr>
- <td>$mainText</td>
- <td>$addAboveButton</td>
- <td>$removeButton</td>
- <td class="instanceRearranger">$rearranger</td>
- </tr>
- </table>
-END;
-
- return $text;
- }
-
- /**
- * Creates the HTML for a single instance of a multiple-instance template;
- * plus the end tags for the full multiple-instance HTML.
- */
- function multipleTemplateInstanceHTML( $form_is_disabled, $all_instances_printed, &$section, $instance_num, $add_button_text ) {
- global $sfgTabIndex;
-
- if ( ! $all_instances_printed ) {
- // Add the character "a" onto the instance number of this input
- // in the form, to differentiate the inputs the form starts out
- // with from any inputs added by the Javascript.
- $section = str_replace( '[num]', "[{$instance_num}a]", $section );
-
- $text = "\t\t" . Html::rawElement( 'div',
- array(
- // The "multipleTemplate" class is there for
- // backwards-compatibility with any custom CSS on people's
- // wikis before SF 2.0.9.
- 'class' => "multipleTemplateInstance multipleTemplate"
- ),
- $this->multipleTemplateInstanceTableHTML( $form_is_disabled, $section )
- ) . "\n";
-
- } else { // if ( $all_instances_printed ) {
- // This is the last instance of this
- // template - print all the sections
- // necessary for adding additional
- // instances.
- $text = "\t\t" . Html::rawElement( 'div',
- array(
- 'class' => "multipleTemplateStarter",
- 'style' => "display: none",
- ),
- $this->multipleTemplateInstanceTableHTML( $form_is_disabled, $section )
- ) . "\n";
-
- $attributes = array(
- 'tabindex' => $sfgTabIndex,
- 'class' => 'multipleTemplateAdder',
- );
- if ( $form_is_disabled ) $attributes['disabled'] = true;
- $button = Html::input( null, Sanitizer::decodeCharReferences( $add_button_text ), 'button', $attributes );
- $text .= <<<END
- </div><!-- multipleTemplateList -->
- <p>$button</p>
- </div><!-- multipleTemplateWrapper -->
-END;
- }
- return $text;
- }
-
- /**
- * If the value passed in for a certain field, when a form is
- * submitted, is an array, then it might be from a checkbox
- * or date input - in that case, convert it into a string.
- */
- function getStringFromPassedInArray( $value, $delimiter ) {
- // If it's just a regular list, concatenate it.
- // This is needed due to some strange behavior
- // in SF, where, if a preload page is passed in
- // in the query string, the form ends up being
- // parsed twice.
- if ( array_key_exists( 'is_list', $value ) ) {
- unset($value['is_list']);
- return implode( "$delimiter ", $value );
- }
-
- // if it has 1 or 2 elements, assume it's a checkbox; if it has
- // 3 elements, assume it's a date
- // - this handling will have to get more complex if other
- // possibilities get added
- if ( count( $value ) == 1 ) {
- return SFUtils::getWordForYesOrNo( false );
- } elseif ( count( $value ) == 2 ) {
- return SFUtils::getWordForYesOrNo( true );
- // if it's 3 or greater, assume it's a date or datetime
- } elseif ( count( $value ) >= 3 ) {
- $month = $value['month'];
- $day = $value['day'];
- if ( $day !== '' ) {
- global $wgAmericanDates;
- if ( $wgAmericanDates == false ) {
- // pad out day to always be two digits
- $day = str_pad( $day, 2, "0", STR_PAD_LEFT );
- }
- }
- $year = $value['year'];
- $hour = $minute = $second = $ampm24h = $timezone = null;
- if ( isset( $value['hour'] ) ) $hour = $value['hour'];
- if ( isset( $value['minute'] ) ) $minute = $value['minute'];
- if ( isset( $value['second'] ) ) $second = $value['second'];
- if ( isset( $value['ampm24h'] ) ) $ampm24h = $value['ampm24h'];
- if ( isset( $value['timezone'] ) ) $timezone = $value['timezone'];
- //if ( $month !== '' && $day !== '' && $year !== '' ) {
- // We can accept either year, or year + month, or year + month + day.
- //if ( $month !== '' && $day !== '' && $year !== '' ) {
- if ( $year !== '' ) {
- // special handling for American dates - otherwise, just
- // the standard year/month/day (where month is a number)
- global $wgAmericanDates;
-
- if ( $month == '' ) {
- return $year;
- } elseif ( $day == '' ) {
- if ( $wgAmericanDates == true ) {
- return "$month $year";
- } else {
- return "$year/$month";
- }
- } else {
- if ( $wgAmericanDates == true ) {
- $new_value = "$month $day, $year";
- } else {
- $new_value = "$year/$month/$day";
- }
- // If there's a day, include whatever
- // time information we have.
- if ( ! is_null( $hour ) ) {
- $new_value .= " " . str_pad( intval( substr( $hour, 0, 2 ) ), 2, '0', STR_PAD_LEFT ) . ":" . str_pad( intval( substr( $minute, 0, 2 ) ), 2, '0', STR_PAD_LEFT );
- }
- if ( ! is_null( $second ) ) {
- $new_value .= ":" . str_pad( intval( substr( $second, 0, 2 ) ), 2, '0', STR_PAD_LEFT );
- }
- if ( ! is_null( $ampm24h ) ) {
- $new_value .= " $ampm24h";
- }
- if ( ! is_null( $timezone ) ) {
- $new_value .= " $timezone";
- }
- return $new_value;
- }
- }
- }
- return '';
- }
-
- /**
- * This function is the real heart of the entire Semantic Forms
- * extension. It handles two main actions: (1) displaying a form on the
- * screen, given a form definition and possibly page contents (if an
- * existing page is being edited); and (2) creating actual page
- * contents, if the form was already submitted by the user.
- *
- * It also does some related tasks, like figuring out the page name (if
- * only a page formula exists).
- */
- function formHTML( $form_def, $form_submitted, $source_is_page, $form_id = null, $existing_page_content = null, $page_name = null, $page_name_formula = null, $is_query = false, $is_embedded = false ) {
- global $wgRequest, $wgUser, $wgParser;
- global $sfgTabIndex; // used to represent the current tab index in the form
- global $sfgFieldNum; // used for setting various HTML IDs
-
- wfProfileIn( __METHOD__ );
-
- // initialize some variables
- $sfgTabIndex = 1;
- $sfgFieldNum = 1;
- $source_page_matches_this_form = false;
- $form_page_title = null;
- $generated_page_name = $page_name_formula;
- // $form_is_partial is true if:
- // (a) 'partial' == 1 in the arguments
- // (b) 'partial form' is found in the form definition
- // in the latter case, it may remain false until close to the end of
- // the parsing, so we have to assume that it will become a possibility
- $form_is_partial = false;
- $new_text = "";
- // flag for placing "<onlyinclude>" tags in form output
- $onlyinclude_free_text = false;
-
- // If we have existing content and we're not in an active replacement
- // situation, preserve the original content. We do this because we want
- // to pass the original content on IF this is a partial form.
- // TODO: A better approach here would be to pass the revision ID of the
- // existing page content through the replace value, which would
- // minimize the html traffic and would allow us to do a concurrent
- // update check. For now, we pass it through a hidden text field.
-
- if ( ! $wgRequest->getCheck( 'partial' ) ) {
- $original_page_content = $existing_page_content;
- } else {
- $original_page_content = null;
- if ( $wgRequest->getCheck( 'sf_free_text' ) ) {
- if ( !isset( $existing_page_content ) || $existing_page_content == '' ) {
- $existing_page_content = $wgRequest->getVal( 'sf_free_text' );
- }
- $form_is_partial = true;
- }
- }
-
- // Disable all form elements if user doesn't have edit
- // permission - two different checks are needed, because
- // editing permissions can be set in different ways.
- // HACK - sometimes we don't know the page name in advance, but
- // we still need to set a title here for testing permissions.
- if ( $is_embedded ) {
- // If this is an embedded form (probably a 'RunQuery'),
- // just use the name of the actual page we're on.
- global $wgTitle;
- $this->mPageTitle = $wgTitle;
- } elseif ( $is_query ) {
- $this->mPageTitle = Title::newFromText( 'RunQuery dummy title' );
- } elseif ( $page_name === '' || $page_name === null ) {
- $this->mPageTitle = Title::newFromText(
- $wgRequest->getVal( 'namespace' ) . ":Semantic Forms permissions test" );
- } else {
- $this->mPageTitle = Title::newFromText( $page_name );
- }
-
- global $wgOut;
- // Show previous set of deletions for this page, if it's been
- // deleted before.
- if ( ! $form_submitted &&
- ( $this->mPageTitle && !$this->mPageTitle->exists() &&
- is_null( $page_name_formula ) )
- ) {
- $this->showDeletionLog( $wgOut );
- }
- // Unfortunately, we can't just call userCan() here because,
- // since MW 1.16, it has a bug in which it ignores a setting of
- // "$wgEmailConfirmToEdit = true;". Instead, we'll just get the
- // permission errors from the start, and use those to determine whether
- // the page is editable.
- if ( !$is_query ) {
- // $userCanEditPage = ( $wgUser->isAllowed( 'edit' ) && $this->mPageTitle->userCan( 'edit' ) );
- $permissionErrors = $this->mPageTitle->getUserPermissionsErrors( 'edit', $wgUser );
- // The handling of $wgReadOnly and $wgReadOnlyFile
- // has to be done separately.
- if ( wfReadOnly() ) {
- $permissionErrors = array( array( 'readonlytext', array ( wfReadOnlyReason() ) ) );
- }
- $userCanEditPage = count( $permissionErrors ) == 0;
- wfRunHooks( 'sfUserCanEditPage', array( $this->mPageTitle, &$userCanEditPage ) );
- }
- $form_text = "";
- if ( $is_query || $userCanEditPage ) {
- $form_is_disabled = false;
- // Show "Your IP address will be recorded" warning if
- // user is anonymous, and it's not a query -
- // wiki-text for bolding has to be replaced with HTML.
- if ( $wgUser->isAnon() && ! $is_query ) {
- $anon_edit_warning = preg_replace(
- "/'''(.*)'''/",
- "<strong>$1</strong>",
- wfMessage( 'anoneditwarning' )->text()
- );
- $form_text .= "<p>$anon_edit_warning</p>\n";
- }
- } else {
- $form_is_disabled = true;
- $wgOut->setPageTitle( wfMessage( 'badaccess' )->text() );
- $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $permissionErrors, 'edit' ) );
- $wgOut->addHTML( "\n<hr />\n" );
- }
-
-// $oldParser = $wgParser;
-
-// $wgParser = unserialize( serialize( $oldParser ) ); // deep clone of parser
- if ( !$wgParser->Options() ) {
- $wgParser->Options( ParserOptions::newFromUser( $wgUser ) );
- }
- $wgParser->Title( $this->mPageTitle );
- // This is needed in order to make sure $parser->mLinkHolders
- // is set.
- $wgParser->clearState();
-
- $form_def = SFFormUtils::getFormDefinition( $wgParser, $form_def, $form_id );
-
- // Turn form definition file into an array of sections, one for each
- // template definition (plus the first section)
- $form_def_sections = array();
- $start_position = 0;
- $section_start = 0;
- $free_text_was_included = false;
- $free_text_preload_page = null;
- $free_text_components = array();
- $all_values_for_template = array();
- // Unencode any HTML-encoded representations of curly brackets and
- // pipes - this is a hack to allow for forms to include templates
- // that themselves contain form elements - the escaping was needed
- // to make sure that those elements don't get parsed too early.
- $form_def = str_replace( array( '&#123;', '&#124;', '&#125;' ), array( '{', '|', '}' ), $form_def );
- // And another hack - replace the 'free text' standard input with
- // a field declaration to get it to be handled as a field.
- $form_def = str_replace( 'standard input|free text', 'field|<freetext>', $form_def );
- while ( $brackets_loc = strpos( $form_def, "{{{", $start_position ) ) {
- $brackets_end_loc = strpos( $form_def, "}}}", $brackets_loc );
- $bracketed_string = substr( $form_def, $brackets_loc + 3, $brackets_end_loc - ( $brackets_loc + 3 ) );
- $tag_components = SFUtils::getFormTagComponents( $bracketed_string );
- $tag_title = trim( $tag_components[0] );
- if ( $tag_title == 'for template' || $tag_title == 'end template' ) {
- // Create a section for everything up to here
- $section = substr( $form_def, $section_start, $brackets_loc - $section_start );
- $form_def_sections[] = $section;
- $section_start = $brackets_loc;
- }
- $start_position = $brackets_loc + 1;
- } // end while
- $form_def_sections[] = trim( substr( $form_def, $section_start ) );
-
- // Cycle through the form definition file, and possibly an
- // existing article as well, finding template and field
- // declarations and replacing them with form elements, either
- // blank or pre-populated, as appropriate.
- $all_fields = array();
- $data_text = "";
- $template_name = "";
- $allow_multiple = false;
- $instance_num = 0;
- $all_instances_printed = false;
- $strict_parsing = false;
-
- // Placeholder name in the form
- $curPlaceholder = null;
- // Used to store the HTML code of the multiple template, to reinsert it into the right spot
- // This array will keep track of all the replaced @<name>@ strings
- $placeholderFields = array();
-
- for ( $section_num = 0; $section_num < count( $form_def_sections ); $section_num++ ) {
- $start_position = 0;
- $template_text = "";
- // the append is there to ensure that the original
- // array doesn't get modified; is it necessary?
- $section = " " . $form_def_sections[$section_num];
-
-
- $multipleTemplateString = "";
-
- while ( $brackets_loc = strpos( $section, '{{{', $start_position ) ) {
- $brackets_end_loc = strpos( $section, "}}}", $brackets_loc );
- $bracketed_string = substr( $section, $brackets_loc + 3, $brackets_end_loc - ( $brackets_loc + 3 ) );
- $tag_components = SFUtils::getFormTagComponents( $bracketed_string );
- $tag_title = trim( $tag_components[0] );
- // =====================================================
- // for template processing
- // =====================================================
- if ( $tag_title == 'for template' ) {
- $old_template_name = $template_name;
- $template_name = trim( $tag_components[1] );
- $tif = SFTemplateInForm::create( $template_name );
- $query_template_name = str_replace( ' ', '_', $template_name );
- $add_button_text = wfMessage( 'sf_formedit_addanother' )->text();
- $minimumInstances = null;
- $maximumInstances = null;
- // Also replace periods with underlines, since that's what
- // POST does to strings anyway.
- $query_template_name = str_replace( '.', '_', $query_template_name );
- // ...and escape apostrophes.
- // (Or don't.)
- //$query_template_name = str_replace( "'", "\'", $query_template_name );
- // Cycle through the other components.
- for ( $i = 2; $i < count( $tag_components ); $i++ ) {
- $component = $tag_components[$i];
- if ( $component == 'multiple' ) $allow_multiple = true;
- if ( $component == 'strict' ) $strict_parsing = true;
- $sub_components = array_map( 'trim', explode( '=', $component, 2 ) );
- if ( count( $sub_components ) == 2 ) {
- if ( $sub_components[0] == 'label' ) {
- $template_label = $sub_components[1];
- } elseif ( $sub_components[0] == 'minimum instances' ) {
- $minimumInstances = $sub_components[1];
- } elseif ( $sub_components[0] == 'maximum instances' ) {
- $maximumInstances = $sub_components[1];
- } elseif ( $sub_components[0] == 'add button text' ) {
- $add_button_text = $wgParser->recursiveTagParse( $sub_components[1] );
- } elseif ( $sub_components[0] == 'embed in field' ) {
- // Placeholder on form template level. Assume that the template form def
- // will have a multiple+placeholder parameters, and get the placeholder value.
- // We expect something like TemplateName[fieldName], and convert it to the
- // TemplateName___fieldName form used internally.
- preg_match( '/\s*(.*)\[(.*)\]\s*/', $sub_components[1], $matches );
- $curPlaceholder = ( count( $matches ) > 2 ) ? self::placeholderFormat( $matches[1], $matches[2] ) : null;
- unset( $matches );
- }
- }
- }
- // If this is the first instance, add
- // the label into the form, if there is
- // one, and add the appropriate wrapper
- // div, if this is a multiple-instance
- // template.
- if ( $old_template_name != $template_name ) {
- if ( isset( $template_label ) ) {
- $multipleTemplateString .= "<fieldset>\n";
- $multipleTemplateString .= "<legend>$template_label</legend>\n";
- }
- // If $curPlaceholder is set, it means we want to insert a
- // multiple template form's HTML into the main form's HTML.
- // So, the HTML will be stored in $multipleTemplateString.
- if ( $allow_multiple ) {
- $multipleTemplateString .= "\t" . '<div class="multipleTemplateWrapper">' . "\n";
- $multipleTemplateString .= "\t" . '<div class="multipleTemplateList"';
- if ( !is_null( $minimumInstances ) ) {
- $multipleTemplateString .= " minimumInstances=\"$minimumInstances\"";
- }
- if ( !is_null( $maximumInstances ) ) {
- $multipleTemplateString .= " maximumInstances=\"$maximumInstances\"";
- }
- $multipleTemplateString .= ">\n";
- }
- }
- if ( $curPlaceholder == null ) {
- $form_text .= $multipleTemplateString;
- }
- $template_text .= "{{" . $template_name;
- $all_fields = $tif->getAllFields();
- // remove template tag
- $section = substr_replace( $section, '', $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- $template_instance_query_values = $wgRequest->getArray( $query_template_name );
- // If we are editing a page, and this
- // template can be found more than
- // once in that page, and multiple
- // values are allowed, repeat this
- // section.
- $existing_template_text = null;
- if ( $source_is_page || $form_is_partial ) {
- // Replace underlines with spaces in template name, to allow for
- // searching on either.
- $search_template_str = str_replace( '_', ' ', $template_name );
- $preg_match_template_str = str_replace(
- array( '/', '(', ')', '^' ),
- array( '\/', '\(', '\)', '\^' ),
- $search_template_str );
- $found_instance = preg_match( '/{{' . $preg_match_template_str . '\s*[\|}]/i', str_replace( '_', ' ', $existing_page_content ) );
- if ( $allow_multiple ) {
- // Find instances of this template in the page -
- // if there's at least one, re-parse this section of the
- // definition form for the subsequent template instances in
- // this page; if there's none, don't include fields at all.
- // There has to be a more efficient way to handle multiple
- // instances of templates, one that doesn't involve re-parsing
- // the same tags, but I don't know what it is.
- // (Also add additional, blank instances if there's a minimum
- // number required in this form, and we haven't reached it yet.)
- if ( $found_instance || $instance_num < $minimumInstances ) {
- // Print another instance until we reach the minimum
- // instances, which is also the starting number.
- } else {
- $all_instances_printed = true;
- }
- }
- // get the first instance of this template on the page being edited,
- // even if there are more
- if ( $found_instance ) {
- $matches = array();
- $search_pattern = '/{{' . $preg_match_template_str . '\s*[\|}]/i';
- $content_str = str_replace( '_', ' ', $existing_page_content );
- preg_match( $search_pattern, $content_str, $matches, PREG_OFFSET_CAPTURE );
- // is this check necessary?
- if ( array_key_exists( 0, $matches ) && array_key_exists( 1, $matches[0] ) ) {
- $start_char = $matches[0][1];
- $fields_start_char = $start_char + 2 + strlen( $search_template_str );
- // Skip ahead to the first real character.
- while ( in_array( $existing_page_content[$fields_start_char], array( ' ', '\n' ) ) ) {
- $fields_start_char++;
- }
- // If the next character is a pipe, skip that too.
- if ( $existing_page_content[$fields_start_char] == '|' ) {
- $fields_start_char++;
- }
- $template_contents = array( '0' => '' );
- // Cycle through template call, splitting it up by pipes ('|'),
- // except when that pipe is part of a piped link.
- $field = "";
- $uncompleted_square_brackets = 0;
- $uncompleted_curly_brackets = 2;
- $template_ended = false;
- for ( $i = $fields_start_char; ! $template_ended && ( $i < strlen( $existing_page_content ) ); $i++ ) {
- $c = $existing_page_content[$i];
- if ( $c == '[' ) {
- $uncompleted_square_brackets++;
- } elseif ( $c == ']' && $uncompleted_square_brackets > 0 ) {
- $uncompleted_square_brackets--;
- } elseif ( $c == '{' ) {
- $uncompleted_curly_brackets++;
- } elseif ( $c == '}' && $uncompleted_curly_brackets > 0 ) {
- $uncompleted_curly_brackets--;
- }
- // handle an end to a field and/or template declaration
- $template_ended = ( $uncompleted_curly_brackets == 0 && $uncompleted_square_brackets == 0 );
- $field_ended = ( $c == '|' && $uncompleted_square_brackets == 0 && $uncompleted_curly_brackets <= 2 );
- if ( $template_ended || $field_ended ) {
- // if this was the last character in the template, remove
- // the closing curly brackets
- if ( $template_ended ) {
- $field = substr( $field, 0, - 1 );
- }
- // either there's an equals sign near the beginning or not -
- // handling is similar in either way; if there's no equals
- // sign, the index of this field becomes the key
- $sub_fields = explode( '=', $field, 2 );
- if ( count( $sub_fields ) > 1 ) {
- $template_contents[trim( $sub_fields[0] )] = trim( $sub_fields[1] );
- } else {
- $template_contents[] = trim( $sub_fields[0] );
- }
- $field = '';
- } else {
- $field .= $c;
- }
- }
- // If there are uncompleted opening brackets, the whole form will get messed up -
- // display a warning.
- // (If there are too many *closing* brackets, some template stuff will end up in
- // the "free text" field - which is bad, but it's harder for the code to detect
- // the problem - though hopefully, easier for users.)
- if ( $uncompleted_curly_brackets > 0 || $uncompleted_square_brackets > 0 ) {
- $form_text .= "\t" . '<div class="warningbox">' .
- wfMessage(
- 'sf_formedit_mismatchedbrackets',
- $this->mPageTitle->getFullURL(
- array( 'action' => 'edit' )
- )
- )->text() .
- "</div>\n<br clear=\"both\" />\n";
- }
- $existing_template_text = substr( $existing_page_content, $start_char, $i - $start_char );
- // now remove this template from the text being edited
- // if this is a partial form, establish a new insertion point
- if ( $existing_page_content && $form_is_partial && $wgRequest->getCheck( 'partial' ) ) {
- // if something already exists, set the new insertion point
- // to its position; otherwise just let it lie
- if ( strpos( $existing_page_content, $existing_template_text ) !== false ) {
- $existing_page_content = str_replace( '{{{insertionpoint}}}', '', $existing_page_content );
- $existing_page_content = str_replace( $existing_template_text, '{{{insertionpoint}}}', $existing_page_content );
- }
- } else {
- $existing_page_content = $this->strReplaceFirst( $existing_template_text, '', $existing_page_content );
- }
- // If this is not a multiple-instance template, and we've found
- // a match in the source page, there's a good chance that this
- // page was created with this form - note that, so we don't
- // send the user a warning
- // (multiple-instance templates have a greater chance of
- // getting repeated from one form to the next)
- // - on second thought, allow even the presence of multiple-
- // instance templates to validate that this is the correct
- // form: the problem is that some forms contain *only* mutliple-
- // instance templates.
- // if (! $allow_multiple) {
- $source_page_matches_this_form = true;
- // }
- }
- }
- }
- // If the input is from the form (meaning the user has hit one
- // of the bottom row of buttons), and we're dealing with a
- // multiple template, get the values for this instance of this
- // template, then delete them from the array, so we can get the
- // next group next time - the next() command for arrays doesn't
- // seem to work here.
- // @TODO - This is currently called regardless of whether the
- // input is from the form; the $wgRequest check doesn't do
- // anything. Is that a problem?
- if ( ( ! $source_is_page ) && $allow_multiple && $wgRequest ) {
- if ( $instance_num < $minimumInstances ) {
- // Print another instance until we reach the minimum
- // instances, which is also the starting number.
- } else {
- $all_instances_printed = true;
- }
- if ( $old_template_name != $template_name ) {
- $all_values_for_template = $wgRequest->getArray( $query_template_name );
- }
- if ( $all_values_for_template ) {
- $cur_key = key( $all_values_for_template );
- // skip the input coming in from the "starter" div
- // TODO: this code is probably no longer necessary
- if ( $cur_key == 'num' ) {
- unset( $all_values_for_template[$cur_key] );
- $cur_key = key( $all_values_for_template );
- }
- if ( $template_instance_query_values = current( $all_values_for_template ) ) {
- $all_instances_printed = false;
- unset( $all_values_for_template[$cur_key] );
- }
- }
- }
- // =====================================================
- // end template processing
- // =====================================================
- } elseif ( $tag_title == 'end template' ) {
- if ( $source_is_page ) {
- // Add any unhandled template fields in the page as hidden variables.
- if ( isset( $template_contents ) ) {
- $form_text .= SFFormUtils::unhandledFieldsHTML( $template_name, $template_contents );
- $template_contents = null;
- }
- }
- // Remove this tag, reset some variables, and close off form HTML tag.
- $section = substr_replace( $section, '', $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- $template_name = null;
- if ( isset( $template_label ) && $curPlaceholder == null ) {
- $form_text .= "</fieldset>\n";
- unset ( $template_label );
- }
- $allow_multiple = false;
- $all_instances_printed = false;
- $instance_num = 0;
- // =====================================================
- // field processing
- // =====================================================
- } elseif ( $tag_title == 'field' ) {
- $field_name = trim( $tag_components[1] );
- $fullFieldName = $template_name . '[' . $field_name . ']';
- // cycle through the other components
- $is_mandatory = false;
- $is_hidden = false;
- $is_restricted = false;
- $is_uploadable = false;
- $is_list = false;
- $delimiter = null;
- $input_type = null;
- $field_args = array();
- $show_on_select = array();
- $default_value = null;
- $values = null;
- $possible_values = null;
- $semantic_property = null;
- $preload_page = null;
- $holds_template = false;
-
- for ( $i = 2; $i < count( $tag_components ); $i++ ) {
-
- $component = trim( $tag_components[$i] );
-
- if ( $component == 'mandatory' ) {
- $is_mandatory = true;
- } elseif ( $component == 'hidden' ) {
- $is_hidden = true;
- } elseif ( $component == 'restricted' ) {
- $is_restricted = ( ! $wgUser || ! $wgUser->isAllowed( 'editrestrictedfields' ) );
- } elseif ( $component == 'list' ) {
- $is_list = true;
- } elseif ( $component == 'edittools' ) { // free text only
- $free_text_components[] = 'edittools';
- }
-
- $sub_components = array_map( 'trim', explode( '=', $component, 2 ) );
-
- if ( count( $sub_components ) == 1 ) {
- // add handling for single-value params, for custom input types
- $field_args[$sub_components[0]] = true;
-
- if ( $component == 'holds template' ) {
- $is_hidden = true;
- $holds_template = true;
- $placeholderFields[] = self::placeholderFormat( $template_name, $field_name );
- }
- } elseif ( count( $sub_components ) == 2 ) {
- // First, set each value as its own entry in $field_args.
- $field_args[$sub_components[0]] = $sub_components[1];
-
- // Then, do all special handling.
- if ( $sub_components[0] == 'input type' ) {
- $input_type = $sub_components[1];
- } elseif ( $sub_components[0] == 'default' ) {
- $default_value = $wgParser->recursiveTagParse( $sub_components[1] );
- } elseif ( $sub_components[0] == 'preload' ) {
- // free text field has special handling
- if ( $field_name == 'free text' || $field_name == '<freetext>' ) {
- $free_text_preload_page = $sub_components[1];
- } else {
- $preload_page = $sub_components[1];
- }
- } elseif ( $sub_components[0] == 'show on select' ) {
- // html_entity_decode() is needed to turn '&gt;' to '>'
- $vals = explode( ';', html_entity_decode( $sub_components[1] ) );
- foreach ( $vals as $val ) {
- $val = trim( $val );
- if ( empty( $val ) )
- continue;
- $option_div_pair = explode( '=>', $val, 2 );
- if ( count( $option_div_pair ) > 1 ) {
- $option = $option_div_pair[0];
- $div_id = $option_div_pair[1];
- if ( array_key_exists( $div_id, $show_on_select ) )
- $show_on_select[$div_id][] = $option;
- else
- $show_on_select[$div_id] = array( $option );
- } else {
- $show_on_select[$val] = array();
- }
- }
- } elseif ( $sub_components[0] == 'autocomplete on property' ) {
- $property_name = $sub_components[1];
- $propValue = SMWPropertyValue::makeUserProperty( $property_name );
- if ( $propValue->getPropertyTypeID() == '_wpg' ) {
- $field_args['autocomplete field type'] = 'relation';
- } else {
- $field_args['autocomplete field type'] = 'attribute';
- }
- $field_args['autocompletion source'] = $sub_components[1];
- } elseif ( $sub_components[0] == 'autocomplete on category' ) {
- $field_args['autocomplete field type'] = 'category';
- $field_args['autocompletion source'] = $sub_components[1];
- } elseif ( $sub_components[0] == 'autocomplete on concept' ) {
- $field_args['autocomplete field type'] = 'concept';
- $field_args['autocompletion source'] = $sub_components[1];
- } elseif ( $sub_components[0] == 'autocomplete on namespace' ) {
- $field_args['autocomplete field type'] = 'namespace';
- $autocompletion_source = $sub_components[1];
- // special handling for "main" (blank) namespace
- if ( $autocompletion_source == "" )
- $autocompletion_source = "main";
- $field_args['autocompletion source'] = $autocompletion_source;
- } elseif ( $sub_components[0] == 'autocomplete from url' ) {
- $field_args['autocomplete field type'] = 'external_url';
- $field_args['autocompletion source'] = $sub_components[1];
- // 'external' autocompletion is always done remotely, i.e. via API
- $field_args['remote autocompletion'] = true;
- } elseif ( $sub_components[0] == 'values' ) {
- // Handle this one only after 'delimiter' has
- // also been set.
- $values = $sub_components[1];
- } elseif ( $sub_components[0] == 'values from property' ) {
- $propertyName = $sub_components[1];
- $possible_values = SFUtils::getAllValuesForProperty( $propertyName );
- } elseif ( $sub_components[0] == 'values from query' ) {
- $pages = SFUtils::getAllPagesForQuery( $sub_components[1] );
- foreach ( $pages as $page ) {
- $page_name_for_values = $page->getDbKey();
- $possible_values[] = $page_name_for_values;
- }
- } elseif ( $sub_components[0] == 'values from category' ) {
- $category_name = ucfirst( $sub_components[1] );
- $possible_values = SFUtils::getAllPagesForCategory( $category_name, 10 );
- } elseif ( $sub_components[0] == 'values from concept' ) {
- $possible_values = SFUtils::getAllPagesForConcept( $sub_components[1] );
- } elseif ( $sub_components[0] == 'values from namespace' ) {
- $possible_values = SFUtils::getAllPagesForNamespace( $sub_components[1] );
- } elseif ( $sub_components[0] == 'values dependent on' ) {
- global $sfgDependentFields;
- $sfgDependentFields[] = array( $sub_components[1], $fullFieldName );
- } elseif ( $sub_components[0] == 'property' ) {
- $semantic_property = $sub_components[1];
- } elseif ( $sub_components[0] == 'default filename' ) {
- $default_filename = str_replace( '&lt;page name&gt;', $page_name, $sub_components[1] );
- // Parse value, so default filename can include parser functions.
- $default_filename = $wgParser->recursiveTagParse( $default_filename );
- $field_args['default filename'] = $default_filename;
- } elseif ( $sub_components[0] == 'restricted' ) {
- $is_restricted = !array_intersect(
- $wgUser->getEffectiveGroups(), array_map( 'trim', explode( ',', $sub_components[1] ) )
- );
- }
- if ( !is_null( $possible_values ) && array_key_exists( 'mapping template', $field_args ) ) {
- $possible_values = SFUtils::getLabels( $possible_values, $field_args['mapping template'] );
- }
- }
- } // end for
- // Backwards compatibility
- if ( $input_type == 'datetime with timezone' ) {
- $input_type = 'datetime';
- $field_args['include timezone'] = true;
- } elseif ( $input_type == 'text' || $input_type == 'textarea' ) {
- // Also for backwards compatibility,
- // in that once b/c goes away,
- // this will no longer be
- // necessary.
- $field_args['no autocomplete'] = true;
- }
- if ( $allow_multiple ) {
- $field_args['part_of_multiple'] = $allow_multiple;
- }
- if ( count( $show_on_select ) > 0 ) {
- $field_args['show on select'] = $show_on_select;
- }
- if ( array_key_exists( 'delimiter', $field_args ) ) {
- $delimiter = $field_args['delimiter'];
- } else {
- $delimiter = ",";
- }
-
- // Get the value from the request, if
- // it's there, and if it's not an array.
- $cur_value = null;
- $escaped_field_name = str_replace( "'", "\'", $field_name );
- if ( isset( $template_instance_query_values ) &&
- $template_instance_query_values != null &&
- is_array( $template_instance_query_values ) ) {
- // If the field name contains an
- // apostrophe, the array sometimes
- // has the apostrophe escaped, and
- // sometimes not. For now, just check
- // for both versions.
- // @TODO - figure this out.
- $field_query_val = null;
- if ( array_key_exists( $escaped_field_name, $template_instance_query_values ) ) {
- $field_query_val = $template_instance_query_values[$escaped_field_name];
- } elseif ( array_key_exists( $field_name, $template_instance_query_values ) ) {
- $field_query_val = $template_instance_query_values[$field_name];
- }
- if ( $form_submitted && $field_query_val != '' ) {
- $mapping_template = null;
- if ( array_key_exists( 'mapping_template', $template_instance_query_values ) &&
- array_key_exists( $field_name, $template_instance_query_values['mapping_template'] ) ) {
- $mapping_template = $template_instance_query_values['mapping_template'][$field_name];
- }
- if ( is_array( $field_query_val ) ) {
- $cur_values = array();
- foreach ( $field_query_val as $key => $value ) {
- if ( !is_null( $mapping_template ) && !is_null( $possible_values ) ) {
- $cur_values = array();
- foreach ( $field_query_val as $key => $val ) {
- if ( $key === 'is_list' ) {
- $cur_values[$key] = $val;
- } else {
- $cur_values[] = SFUtils::labelToValue( $val, $possible_values, $mapping_template );
- }
- }
- } else {
- $cur_values[$key] = $value;
- }
- }
- $cur_value = $this->getStringFromPassedInArray( $cur_values, $delimiter );
- } else {
- if ( !is_null( $mapping_template ) && !is_null( $possible_values ) ) {
- $cur_value = SFUtils::labelToValue( $field_query_val, $possible_values, $mapping_template );
- } else {
- $cur_value = $field_query_val;
- }
- }
- }
- if ( !$form_submitted && $field_query_val != '' ) {
- if ( is_array( $field_query_val ) ) {
- $cur_value = $this->getStringFromPassedInArray( $field_query_val, $delimiter );
- } else {
- $cur_value = $field_query_val;
- }
- }
- }
-
- if ( empty( $cur_value ) && !$form_submitted ) {
- if ( !is_null( $default_value ) ) {
- // Set to the default value specified in the form, if it's there.
- $cur_value = $default_value;
- } elseif ( $preload_page ) {
- $cur_value = SFFormUtils::getPreloadedText( $preload_page );
- }
- }
-
- // If the user is editing a page, and that page contains a call to
- // the template being processed, get the current field's value
- // from the template call
- if ( $source_is_page && ( ! empty( $existing_template_text ) ) ) {
- if ( isset( $template_contents[$field_name] ) ) {
- $cur_value = $template_contents[$field_name];
-
- // If the field is a placeholder, the contents of this template
- // parameter should be treated as elements parsed by an another
- // multiple template form.
- // By putting that at the very end of the parsed string, we'll
- // have it processed as a regular multiple template form.
- if ( $holds_template ) {
- $existing_page_content = $existing_page_content . $cur_value;
- }
-
- // Now remove this value
- // from $template_contents,
- // so that at the end we
- // can have a list of all
- // the fields that weren't
- // handled by the form.
- unset( $template_contents[$field_name] );
- } elseif ( isset( $cur_value ) && !empty( $cur_value ) ) {
- // Do nothing.
- } else {
- $cur_value = '';
- }
- }
-
- // Handle the free text field.
- if ( $field_name == '<freetext>' ) {
- // Add placeholders for the free text in both the form and
- // the page, using <free_text> tags - once all the free text
- // is known (at the end), it will get substituted in.
- if ( $is_hidden ) {
- $new_text = Html::hidden( 'sf_free_text', '!free_text!' );
- } else {
- $sfgTabIndex++;
- $sfgFieldNum++;
- if ( $cur_value === '' || is_null( $cur_value ) ) {
- $default_value = '!free_text!';
- } else {
- $default_value = $cur_value;
- }
- $new_text = SFTextAreaInput::getHTML( $default_value, 'sf_free_text', false, ( $form_is_disabled || $is_restricted ), $field_args );
- if ( in_array( 'edittools', $free_text_components ) ) {
- // borrowed from EditPage::showEditTools()
- $options[] = 'parse';
- $edittools_text = $wgParser->recursiveTagParse( wfMessage( 'edittools', array( 'content' ) )->text() );
-
- $new_text .= <<<END
- <div class="mw-editTools">
- $edittools_text
- </div>
-
-END;
- }
- }
- $free_text_was_included = true;
- // add a similar placeholder to the data text
- $data_text .= "!free_text!\n";
- }
-
- if ( $template_name === '' || $field_name == '<freetext>' ) {
- $section = substr_replace( $section, $new_text, $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- } else {
- if ( is_array( $cur_value ) ) {
- // first, check if it's a list
- if ( array_key_exists( 'is_list', $cur_value ) &&
- $cur_value['is_list'] == true ) {
- $cur_value_in_template = "";
- foreach ( $cur_value as $key => $val ) {
- if ( $key !== "is_list" ) {
- if ( $cur_value_in_template != "" ) {
- $cur_value_in_template .= $delimiter . " ";
- }
- $cur_value_in_template .= $val;
- }
- }
- } else {
- // If it's not a list, it's probably from a checkbox or date input -
- // convert the values into a string.
- $cur_value_in_template = $this->getStringFromPassedInArray( $cur_value, $delimiter );
- }
- } else { // value is not an array
- $cur_value_in_template = $cur_value;
- }
- if ( $template_name == null || $template_name === '' ) {
- $input_name = $field_name;
- } elseif ( $allow_multiple ) {
- // 'num' will get replaced by an actual index, either in PHP
- // or in Javascript, later on
- $input_name = $template_name . '[num][' . $field_name . ']';
- $field_args['origName'] = $template_name . '[' . $field_name . ']';
- } else {
- $input_name = $template_name . '[' . $field_name . ']';
- }
-
-
- // If the 'values' parameter was set, separate it based on the
- // 'delimiter' parameter, if any.
- if ( ! empty( $values ) ) {
- // Remove whitespaces, and un-escape characters
- $possible_values = array_map( 'trim', explode( $delimiter, $values ) );
- $possible_values = array_map( 'htmlspecialchars_decode', $possible_values );
- }
-
- // if we're creating the page name from a formula based on
- // form values, see if the current input is part of that formula,
- // and if so, substitute in the actual value
- if ( $form_submitted && $generated_page_name !== '' ) {
- // this line appears to be unnecessary
- // $generated_page_name = str_replace('.', '_', $generated_page_name);
- $generated_page_name = str_replace( ' ', '_', $generated_page_name );
- $escaped_input_name = str_replace( ' ', '_', $input_name );
- $generated_page_name = str_ireplace( "<$escaped_input_name>", $cur_value_in_template, $generated_page_name );
- // once the substitution is done, replace underlines back
- // with spaces
- $generated_page_name = str_replace( '_', ' ', $generated_page_name );
- }
- // disable this field if either the whole form is disabled, or
- // it's a restricted field and user doesn't have sysop privileges
- $is_disabled = ( $form_is_disabled || $is_restricted );
- // Create an SFFormField instance based on all the parameters
- // in the form definition, and any information from the template
- // definition (contained in the $all_fields parameter).
- $form_field = SFFormField::createFromDefinition( $field_name,
- $input_name, $is_mandatory, $is_hidden, $is_uploadable,
- $possible_values, $is_disabled, $is_list, $input_type,
- $field_args, $all_fields, $strict_parsing );
- // If a property was set in the form definition, overwrite whatever
- // is set in the template field - this is somewhat of a hack, since
- // parameters set in the form definition are meant to go into the
- // SFFormField object, not the SFTemplateField object it contains;
- // it seemed like too much work, though, to create an
- // SFFormField::setSemanticProperty() function just for this call
- if ( $semantic_property != null ) {
- $form_field->template_field->setSemanticProperty( $semantic_property );
- }
- $semantic_property = $form_field->template_field->getSemanticProperty();
- if ( !is_null( $semantic_property ) ) {
- global $sfgFieldProperties;
- $sfgFieldProperties[$fullFieldName] = $semantic_property;
- }
-
-
- // call hooks - unfortunately this has to be split into two
- // separate calls, because of the different variable names in
- // each case
- if ( $form_submitted ) {
- wfRunHooks( 'sfCreateFormField', array( &$form_field, &$cur_value_in_template, true ) );
- } else {
- if ( !empty( $cur_value ) && array_key_exists( 'mapping template', $field_args ) ) {
- $cur_value = SFUtils::valuesToLabels( $cur_value, $field_args['mapping template'], $delimiter, $possible_values );
- }
- wfRunHooks( 'sfCreateFormField', array( &$form_field, &$cur_value, false ) );
- }
- // if this is not part of a 'multiple' template, increment the
- // global tab index (used for correct tabbing)
- if ( ! array_key_exists( 'part_of_multiple', $field_args ) ) {
- $sfgTabIndex++;
- }
- // increment the global field number regardless
- $sfgFieldNum++;
- // If the field is a date field, and its default value was set
- // to 'now', and it has no current value, set $cur_value to be
- // the current date.
- if ( $default_value == 'now' &&
- // if the date is hidden, cur_value will already be set
- // to the default value
- ( $cur_value == '' || $cur_value == 'now' ) ) {
- if ( $input_type == 'date' || $input_type == 'datetime' ||
- $input_type == 'year' ||
- ( $input_type == '' && $form_field->getTemplateField()->getPropertyType() == '_dat' ) ) {
- // Get current time, for the time zone specified in the wiki.
- global $wgLocaltimezone;
- if ( isset( $wgLocaltimezone ) ) {
- $serverTimezone = date_default_timezone_get();
- date_default_timezone_set( $wgLocaltimezone );
- }
- $cur_time = time();
- $year = date( "Y", $cur_time );
- $month = date( "n", $cur_time );
- $day = date( "j", $cur_time );
- global $wgAmericanDates, $sfg24HourTime;
- if ( $wgAmericanDates == true ) {
- $month_names = SFFormUtils::getMonthNames();
- $month_name = $month_names[$month - 1];
- $cur_value_in_template = "$month_name $day, $year";
- } else {
- $cur_value_in_template = "$year/$month/$day";
- }
- if ( isset( $wgLocaltimezone ) ) {
- date_default_timezone_set( $serverTimezone );
- }
- if ( $input_type == 'datetime' ) {
- if ( $sfg24HourTime ) {
- $hour = str_pad( intval( substr( date( "G", $cur_time ), 0, 2 ) ), 2, '0', STR_PAD_LEFT );
- } else {
- $hour = str_pad( intval( substr( date( "g", $cur_time ), 0, 2 ) ), 2, '0', STR_PAD_LEFT );
- }
- $minute = str_pad( intval( substr( date( "i", $cur_time ), 0, 2 ) ), 2, '0', STR_PAD_LEFT );
- $second = str_pad( intval( substr( date( "s", $cur_time ), 0, 2 ) ), 2, '0', STR_PAD_LEFT );
- if ( $sfg24HourTime ) {
- $cur_value_in_template .= " $hour:$minute:$second";
- } else {
- $ampm = date( "A", $cur_time );
- $cur_value_in_template .= " $hour:$minute:$second $ampm";
- }
- }
- if ( array_key_exists( 'include timezone', $field_args ) ) {
- $timezone = date( "T", $cur_time );
- $cur_value_in_template .= " $timezone";
- }
- }
- }
- // If the field is a text field, and its default value was set
- // to 'current user', and it has no current value, set $cur_value
- // to be the current user.
- if ( $default_value == 'current user' &&
- // if the date is hidden, cur_value will already be set
- // to the default value
- ( $cur_value === '' || $cur_value == 'current user' ) ) {
-
- $cur_value_in_template = $wgUser->getName();
- $cur_value = $cur_value_in_template;
- }
-
- // Generate a hidden field with a placeholder value that will be replaced
- // by the multiple-instances template output at form submission.
- //// <input type="hidden" value="@replace_Town___mayors@" name="Town[town_mayors]" />
- if ( $holds_template ) {
- $cur_value = self::makePlaceholderInWikiText( self::placeholderFormat( $template_name, $field_name ) );
- }
-
- $new_text = $this->formFieldHTML( $form_field, $cur_value );
-
- // Add a field just after the hidden field, within the HTML, to locate
- // where the multiple-templates HTML, stored in $multipleTemplateString,
- // should be inserted.
- if ( $holds_template ) {
- $new_text .= self::makePlaceholderInFormHTML( self::placeholderFormat( $template_name, $field_name ) );
- }
-
- // If this field is disabled, add a hidden field holding
- // the value of this field, because disabled inputs for some
- // reason don't submit their value.
- if ( $form_field->isDisabled() ) {
- if ( $field_name == 'free text' || $field_name == '<freetext>' ) {
- $new_text .= Html::hidden( 'sf_free_text', '!free_text!' );
- } else {
- $new_text .= Html::hidden( $input_name, $cur_value );
- }
- }
-
- if ( array_key_exists( 'mapping template', $field_args ) ) {
- $new_text .= Html::hidden( $template_name . '[mapping_template][' . $field_name . ']', $field_args['mapping template'] );
- }
-
- if ( $new_text ) {
- // Include the field name only for non-numeric field names.
- if ( is_numeric( $field_name ) ) {
- $template_text .= "|$cur_value_in_template";
- } else {
- // If the value is null, don't include it at all.
- if ( $cur_value_in_template != '' ) {
- $template_text .= "\n|$field_name=$cur_value_in_template";
- }
- }
- $section = substr_replace( $section, $new_text, $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- } else {
- $start_position = $brackets_end_loc;
- }
- }
- // =====================================================
- // standard input processing
- // =====================================================
- } elseif ( $tag_title == 'standard input' ) {
- // handle all the possible values
- $input_name = $tag_components[1];
- $input_label = null;
- $attr = array();
-
- // if it's a query, ignore all standard inputs except run query
- if ( ( $is_query && $input_name != 'run query' ) || ( !$is_query && $input_name == 'run query' ) ) {
- $new_text = "";
- $section = substr_replace( $section, $new_text, $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- continue;
- }
- // set a flag so that the standard 'form bottom' won't get displayed
- $this->standardInputsIncluded = true;
- // cycle through the other components
- $is_checked = false;
- for ( $i = 2; $i < count( $tag_components ); $i++ ) {
- $component = $tag_components[$i];
- $sub_components = array_map( 'trim', explode( '=', $component ) );
- if ( count( $sub_components ) == 1 ) {
- if ( $sub_components[0] == 'edittools' ) {
- $free_text_components[] = 'edittools';
- } elseif ( $sub_components[0] == 'checked' ) {
- $is_checked = true;
- }
- } elseif ( count( $sub_components ) == 2 ) {
- switch( $sub_components[0] ) {
- case 'label':
- $input_label = $wgParser->recursiveTagParse( $sub_components[1] );
- break;
- case 'class':
- case 'style':
- $attr[$sub_components[0]] = $sub_components[1];
- break;
- }
- // free text input needs more handling than the rest
- if ( $input_name == 'free text' || $input_name == '<freetext>' ) {
- if ( $sub_components[0] == 'preload' ) {
- $free_text_preload_page = $sub_components[1];
- }
- }
- }
- }
- if ( $input_name == 'summary' ) {
- $value = $wgRequest->getVal( 'wpSummary' );
- $new_text = SFFormUtils::summaryInputHTML( $form_is_disabled, $input_label, $attr, $value );
- } elseif ( $input_name == 'minor edit' ) {
- $is_checked = $wgRequest->getCheck( 'wpMinoredit' );
- $new_text = SFFormUtils::minorEditInputHTML( $form_submitted, $form_is_disabled, $is_checked, $input_label, $attr );
- } elseif ( $input_name == 'watch' ) {
- $is_checked = $wgRequest->getCheck( 'wpWatchthis' );
- $new_text = SFFormUtils::watchInputHTML( $form_submitted, $form_is_disabled, $is_checked, $input_label, $attr );
- } elseif ( $input_name == 'save' ) {
- $new_text = SFFormUtils::saveButtonHTML( $form_is_disabled, $input_label, $attr );
- } elseif ( $input_name == 'save and continue' ) {
- $new_text = SFFormUtils::saveAndContinueButtonHTML( $form_is_disabled, $input_label, $attr );
- } elseif ( $input_name == 'preview' ) {
- $new_text = SFFormUtils::showPreviewButtonHTML( $form_is_disabled, $input_label, $attr );
- } elseif ( $input_name == 'changes' ) {
- $new_text = SFFormUtils::showChangesButtonHTML( $form_is_disabled, $input_label, $attr );
- } elseif ( $input_name == 'cancel' ) {
- $new_text = SFFormUtils::cancelLinkHTML( $form_is_disabled, $input_label, $attr );
- } elseif ( $input_name == 'run query' ) {
- $new_text = SFFormUtils::runQueryButtonHTML( $form_is_disabled, $input_label, $attr );
- }
- $section = substr_replace( $section, $new_text, $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- // =====================================================
- // for section processing
- // =====================================================
- } elseif ( $tag_title == 'section' ) {
- $section_name = trim( $tag_components[1] );
- $is_mandatory = false;
- $is_hidden = false;
- $is_restricted = false;
- $header_level = 2;
- $other_args = array();
-
- // cycle through the other components
- for ( $i = 2; $i < count( $tag_components ); $i++ ) {
-
- $component = trim( $tag_components[$i] );
-
- if ( $component === 'mandatory' ) {
- $is_mandatory = true;
- } elseif ( $component === 'hidden' ) {
- $is_hidden = true;
- } elseif ( $component === 'restricted' ) {
- $is_restricted = !( $wgUser && $wgUser->isAllowed( 'editrestrictedfields' ) );
- } elseif ( $component === 'autogrow' ) {
- $other_args['autogrow'] = true;
- }
-
- $sub_components = array_map( 'trim', explode( '=', $component, 2 ) );
-
- if ( count( $sub_components ) === 2 ) {
- switch ( $sub_components[0] ) {
- case 'level':
- $header_level = $sub_components[1];
- break;
- case 'rows':
- case 'cols':
- case 'class':
- case 'editor':
- $other_args[$sub_components[0]] = $sub_components[1];
- break;
- default:
- // Ignore unknown
- }
- }
- }
-
- // Generate the wikitext for the section header
- $header_string = str_repeat( "=", $header_level );
- $header_text = $header_string . $section_name . $header_string . "\n";
- $data_text .= $header_text;
-
- // split the existing page contents into the textareas in the form
- $default_value = "";
- $section_start_loc = 0;
- if ( $source_is_page && $existing_page_content !== null ) {
-
- $section_start_loc = strpos( $existing_page_content, $header_text );
- $existing_page_content = str_replace( $header_text, '', $existing_page_content );
- $section_end_loc = -1;
-
- // get the position of the next template or section defined in the form
- $next_section_start_loc = strpos( $section, '{{{', $brackets_end_loc );
- if ( $next_section_start_loc == false ) {
- $section_end_loc = strpos( $existing_page_content, '{{', $section_start_loc );
- } else {
- $next_section_end_loc = strpos( $section, '}}}', $next_section_start_loc );
- $bracketed_string_next_section = substr( $section, $next_section_start_loc + 3, $next_section_end_loc - ( $next_section_start_loc + 3 ) );
- $tag_components_next_section = SFUtils::getFormTagComponents( $bracketed_string_next_section );
- $tag_title_next_section = trim( $tag_components_next_section[0] );
- if ( $tag_title_next_section == 'section' ) {
- if ( preg_match( '/(^={1,6}' . $tag_components_next_section[1] . '?={1,6}\s*?$)/m', $existing_page_content, $matches, PREG_OFFSET_CAPTURE ) ) {
- $section_end_loc = $matches[0][1];
- }
- }
- }
-
- if ( $section_end_loc === -1 ) {
- $default_value = $existing_page_content;
- $existing_page_content = '';
- } else {
- $default_value = substr( $existing_page_content, $section_start_loc, $section_end_loc - $section_start_loc );
- $existing_page_content = substr( $existing_page_content, $section_end_loc );
- }
- }
-
- //if input is from the form
- $section_text = "";
- if ( ( ! $source_is_page ) && $wgRequest ) {
- $section_text = $wgRequest->getArray( '_section' );
- $default_value = $section_text[trim( $section_name )];
-
- if ( $default_value == "" || $default_value == null ) {
- $data_text .= $default_value . "\n\n";
- } else {
- $data_text .= rtrim( $default_value ) . "\n\n";
- }
- }
-
- //set input name for query string
- $input_name = '_section' . '[' . trim( $section_name ) . ']';
- if ( $is_mandatory ) {
- $other_args['mandatory'] = true;
- }
-
- if ( $is_hidden ) {
- $form_section_text = Html::hidden( $input_name, $default_value );
- } else {
- $form_section_text = SFTextAreaInput::getHTML( $default_value, $input_name, false, ( $form_is_disabled || $is_restricted ), $other_args );
- }
-
- $section = substr_replace( $section, $form_section_text, $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- // =====================================================
- // page info processing
- // =====================================================
- } elseif ( $tag_title == 'info' ) {
- // TODO: Generate an error message if this is included more than once
- foreach ( array_slice( $tag_components, 1 ) as $component ) {
- $sub_components = array_map( 'trim', explode( '=', $component, 2 ) );
- // Tag names are case-insensitive
- $tag = strtolower( $sub_components[0] );
- if ( $tag == 'create title' || $tag == 'add title' ) {
- // Handle this only if
- // we're adding a page.
- if ( !$is_query && !$this->mPageTitle->exists() ) {
- $form_page_title = $sub_components[1];
- }
- } elseif ( $tag == 'edit title' ) {
- // Handle this only if
- // we're editing a page.
- if ( !$is_query && $this->mPageTitle->exists() ) {
- $form_page_title = $sub_components[1];
- }
- } elseif ( $tag == 'query title' ) {
- // Handle this only if
- // we're in 'RunQuery'.
- if ( $is_query ) {
- $form_page_title = $sub_components[1];
- }
- } elseif ( $tag == 'partial form' ) {
- $form_is_partial = true;
- // replacement pages may have minimal matches...
- $source_page_matches_this_form = true;
- } elseif ( $tag == 'includeonly free text' || $tag == 'onlyinclude free text' ) {
- $onlyinclude_free_text = true;
- } elseif ( $tag == 'query form at top' ) {
- // TODO - this should be made a field of
- // some non-static class that actually
- // prints the form, instead of requiring
- // a global variable.
- global $sfgRunQueryFormAtTop;
- $sfgRunQueryFormAtTop = true;
- }
- }
- $section = substr_replace( $section, '', $brackets_loc, $brackets_end_loc + 3 - $brackets_loc );
- // =====================================================
- // default outer level processing
- // =====================================================
- } else { // Tag is not one of the three allowed values -
- // ignore the tag.
- $start_position = $brackets_end_loc;
- } // end if
- } // end while
-
- if ( ! $all_instances_printed ) {
- if ( $template_text !== '' ) {
- // For mostly aesthetic purposes, if the template call ends with
- // a bunch of pipes (i.e., it's an indexed template with unused
- // parameters at the end), remove the pipes.
- $template_text = preg_replace( '/\|*$/', '', $template_text );
- // add another newline before the final bracket, if this template
- // call is already more than one line
- if ( strpos( $template_text, "\n" ) ) {
- $template_text .= "\n";
- }
- // If we're editing an existing page, and there were fields in
- // the template call not handled by this form, preserve those.
- if ( !$allow_multiple ) {
- $template_text .= SFFormUtils::addUnhandledFields( $template_name );
- }
- $template_text .= "}}";
-
- // The base $template_text will contain strings like "@replace_xxx@"
- // in the hidden fields when the form is submitted.
- // On the following loops, the text for the multiple-instance templates
- // is progressively reinserted in the main data, always keeping a
- // trailing @replace_xxx@ for a given field
- // The trailing @replace_xxx@ is then deleted at the end.
- // Note: this cleanup step could also be done with a regexp, instead of
- // keeping a track array (e.g., /@replace_(.*)@/)
- $reptmp = self::makePlaceholderInWikiText( $curPlaceholder );
- if ( $curPlaceholder != null && $data_text && strpos( $data_text, $reptmp, 0 ) !== false ) {
- // Escape $template_text, because values like $1 cause problems
- // for preg_replace().
- $escaped_template_text = str_replace( '$', '\$', $template_text );
- $data_text = preg_replace( '/' . $reptmp . '/', $escaped_template_text . $reptmp, $data_text );
- } else {
- $data_text .= $template_text . "\n";
- }
-
- // If there is a placeholder in the
- // text, we know that we are
- // doing a replace.
- if ( $existing_page_content && strpos( $existing_page_content, '{{{insertionpoint}}}', 0 ) !== false ) {
- $existing_page_content = preg_replace( '/\{\{\{insertionpoint\}\}\}(\r?\n?)/',
- preg_replace( '/\}\}/m', '}�',
- preg_replace( '/\{\{/m', '�{', $template_text ) ) .
- "\n{{{insertionpoint}}}",
- $existing_page_content );
- // otherwise, if it's a partial form, we have to add the new
- // text somewhere
- } elseif ( $form_is_partial && $wgRequest->getCheck( 'partial' ) ) {
- $existing_page_content = preg_replace( '/\}\}/m', '}�',
- preg_replace( '/\{\{/m', '�{', $template_text ) ) .
- "\n{{{insertionpoint}}}\n" . $existing_page_content;
- }
- }
- }
-
- if ( $allow_multiple ) {
- if ( $curPlaceholder == null ) {
- // The normal process.
- $form_text .= $this->multipleTemplateInstanceHTML( $form_is_disabled, $all_instances_printed, $section, $instance_num, $add_button_text );
- } else { // if ( $curPlaceholder != null ){
- // The template text won't be appended at the end of the template like for usual multiple template forms.
- // The HTML text will then be stored in the $multipleTemplateString variable,
- // and then added in the right @insertHTML_".$placeHolderField."@"; position
- // Optimization: actually, instead of separating the processes, the usual multiple
- // template forms could also be handled this way if a fitting placeholder tag was added.
- $multipleTemplateString .= $this->multipleTemplateInstanceHTML( $form_is_disabled, $all_instances_printed, $section, $instance_num, $add_button_text );
- // We replace the $multipleTemplateString HTML into the
- // current placeholder tag, but also add another
- // placeholder tag, to keep track of it.
- $multipleTemplateString .= self::makePlaceholderInFormHTML( $curPlaceholder );
- if ( isset( $template_label ) ) {
- $multipleTemplateString .= "</fieldset>\n";
- unset ( $template_label );
- }
- $escapedMultipleTemplateString = str_replace( '$', '\$', $multipleTemplateString );
- $form_text = preg_replace( '/' . self::makePlaceholderInFormHTML( $curPlaceholder ) . '/',
- $escapedMultipleTemplateString, $form_text );
- }
- if ( ! $all_instances_printed ) {
- // This will cause the section to be
- // re-parsed on the next go.
- $section_num--;
- $instance_num++;
- }
- } else {
- $form_text .= $section;
- }
- $curPlaceholder = null;
- } // end for
-
- // Cleanup - everything has been browsed.
- // Remove all the remaining placeholder
- // tags in the HTML and wiki-text.
-
- foreach ( $placeholderFields as $stringToReplace ) {
- // remove the @<replacename>@ tags from the data that is submitted
- $data_text = preg_replace( '/' . self::makePlaceholderInWikiText( $stringToReplace ) . '/', '', $data_text );
-
- // remove the @<insertHTML>@ tags from the generated HTML form
- $form_text = preg_replace( '/' . self::makePlaceholderInFormHTML( $stringToReplace ) . '/', '', $form_text );
- }
-
- // if it wasn't included in the form definition, add the
- // 'free text' input as a hidden field at the bottom
- if ( ! $free_text_was_included ) {
- $form_text .= Html::hidden( 'sf_free_text', '!free_text!' );
- }
- // Get free text, and add to page data, as well as retroactively
- // inserting it into the form.
-
- // If $form_is_partial is true then either:
- // (a) we're processing a replacement (param 'partial' == 1)
- // (b) we're sending out something to be replaced (param 'partial' is missing)
- if ( $form_is_partial ) {
- if ( !$wgRequest->getCheck( 'partial' ) ) {
- $free_text = $original_page_content;
- } else {
- $free_text = null;
- $existing_page_content = preg_replace( array( '/�\{/m', '/\}�/m' ),
- array( '{{', '}}' ),
- $existing_page_content );
- $existing_page_content = preg_replace( '/\{\{\{insertionpoint\}\}\}/', '', $existing_page_content );
- }
- $form_text .= Html::hidden( 'partial', 1 );
- } elseif ( $source_is_page ) {
- // if the page is the source, free_text will just be whatever in the
- // page hasn't already been inserted into the form
- $free_text = trim( $existing_page_content );
- // or get it from a form submission
- } elseif ( $wgRequest->getCheck( 'sf_free_text' ) ) {
- $free_text = $wgRequest->getVal( 'sf_free_text' );
- if ( ! $free_text_was_included ) {
- $data_text .= "!free_text!";
- }
- // or get it from the form definition
- } elseif ( $free_text_preload_page != null ) {
- $free_text = SFFormUtils::getPreloadedText( $free_text_preload_page );
- } else {
- $free_text = null;
- }
- if ( $onlyinclude_free_text ) {
- // modify free text and data text to insert <onlyinclude> tags
- $free_text = str_replace( "<onlyinclude>", '', $free_text );
- $free_text = str_replace( "</onlyinclude>", '', $free_text );
- $free_text = trim( $free_text );
- $data_text = str_replace( '!free_text!', '<onlyinclude>!free_text!</onlyinclude>', $data_text );
- }
-
- wfRunHooks( 'sfModifyFreeTextField', array( &$free_text, $existing_page_content ) );
-
- // now that we have it, substitute free text into the form and page
- $escaped_free_text = Sanitizer::safeEncodeAttribute( $free_text );
- $form_text = str_replace( '!free_text!', $escaped_free_text, $form_text );
- $data_text = str_replace( '!free_text!', $free_text, $data_text );
-
- // Add a warning in, if we're editing an existing page and that
- // page appears to not have been created with this form.
- if ( !$is_query && is_null( $page_name_formula ) &&
- $this->mPageTitle->exists() && $existing_page_content !== ''
- && !$source_page_matches_this_form ) {
- $form_text = "\t" . '<div class="warningbox">' .
- wfMessage( 'sf_formedit_formwarning', $this->mPageTitle->getFullURL() )->text() .
- "</div>\n<br clear=\"both\" />\n" . $form_text;
- }
-
- // add form bottom, if no custom "standard inputs" have been defined
- if ( !$this->standardInputsIncluded ) {
- if ( $is_query )
- $form_text .= SFFormUtils::queryFormBottom( $form_is_disabled );
- else
- $form_text .= SFFormUtils::formBottom( $form_submitted, $form_is_disabled );
- }
-
-
- if ( !$is_query ) {
- $form_text .= Html::hidden( 'wpStarttime', wfTimestampNow() );
- $article = new Article( $this->mPageTitle, 0 );
- $form_text .= Html::hidden( 'wpEdittime', $article->getTimestamp() );
-
- $form_text .= Html::hidden( 'wpEditToken', $wgUser->getEditToken() );
- }
-
- $form_text .= "\t</form>\n";
- $wgParser->replaceLinkHolders( $form_text );
-
- // Add general Javascript code.
- $javascript_text = "";
- wfRunHooks( 'sfAddJavascriptToForm', array( &$javascript_text ) );
-
- // Send the autocomplete values to the browser, along with the
- // mappings of which values should apply to which fields.
- // If doing a replace, the data text is actually the modified original page
- if ( $wgRequest->getCheck( 'partial' ) ) {
- $data_text = $existing_page_content;
- }
-
- if ( !$is_embedded ) {
- $form_page_title = $wgParser->recursiveTagParse( str_replace( "{{!}}", "|", $form_page_title ) );
- } else {
- $form_page_title = null;
- }
-
- // If the form has already been submitted, i.e. this is just
- // the redirect page, get rid of all the Javascript, to avoid
- // JS errors.
- if ( $form_submitted ) {
- $javascript_text = '';
- }
-
- $parserOutput = $wgParser->getOutput();
-
- // addParserOutputMetadata was introduced in 1.24 when addParserOutputNoText was deprecated
- if( method_exists( $wgOut, 'addParserOutputMetadata' ) ){
- $wgOut->addParserOutputMetadata( $parserOutput );
- } else {
- $wgOut->addParserOutputNoText( $parserOutput );
- }
-
-// $wgParser = $oldParser;
-
- wfProfileOut( __METHOD__ );
-
- return array( $form_text, $javascript_text, $data_text, $form_page_title, $generated_page_name );
- }
-
- /**
- * Create the HTML and Javascript to display this field within a form.
- */
- function formFieldHTML( $form_field, $cur_value ) {
- // Also get the actual field, with all the semantic information
- // (type is SFTemplateField, instead of SFFormField)
- $template_field = $form_field->getTemplateField();
-
- if ( $form_field->isHidden() ) {
- $text = Html::hidden( $form_field->getInputName(), $cur_value );
- } elseif ( $form_field->getInputType() !== '' &&
- array_key_exists( $form_field->getInputType(), $this->mInputTypeHooks ) &&
- $this->mInputTypeHooks[$form_field->getInputType()] != null ) {
- $funcArgs = array();
- $funcArgs[] = $cur_value;
- $funcArgs[] = $form_field->getInputName();
- $funcArgs[] = $form_field->isMandatory();
- $funcArgs[] = $form_field->isDisabled();
- // last argument to function should be a hash, merging the default
- // values for this input type with all other properties set in
- // the form definition, plus some semantic-related arguments
- $hook_values = $this->mInputTypeHooks[$form_field->getInputType()];
- $other_args = $form_field->getArgumentsForInputCall( $hook_values[1] );
- $funcArgs[] = $other_args;
- $text = call_user_func_array( $hook_values[0], $funcArgs );
- } else { // input type not defined in form
- $property_type = $template_field->getPropertyType();
- $is_list = ( $form_field->isList() || $template_field->isList() );
- if ( $property_type !== '' &&
- array_key_exists( $property_type, $this->mSemanticTypeHooks ) &&
- isset( $this->mSemanticTypeHooks[$property_type][$is_list] ) ) {
- $funcArgs = array();
- $funcArgs[] = $cur_value;
- $funcArgs[] = $form_field->getInputName();
- $funcArgs[] = $form_field->isMandatory();
- $funcArgs[] = $form_field->isDisabled();
- $hook_values = $this->mSemanticTypeHooks[$property_type][$is_list];
- $other_args = $form_field->getArgumentsForInputCall( $hook_values[1] );
- $funcArgs[] = $other_args;
- $text = call_user_func_array( $hook_values[0], $funcArgs );
- } else { // anything else
- $other_args = $form_field->getArgumentsForInputCall();
- // special call to ensure that a list input is the right default size
- if ( $form_field->isList() ) {
- if ( ! array_key_exists( 'size', $other_args ) ) {
- $other_args['size'] = 100;
- }
- }
- $text = SFTextInput::getHTML( $cur_value, $form_field->getInputName(), $form_field->isMandatory(), $form_field->isDisabled(), $other_args );
- }
- }
- return $text;
- }
-}
diff --git a/SemanticForms/includes/SF_FormUtils.php b/SemanticForms/includes/SF_FormUtils.php
deleted file mode 100644
index 5a5a2a14..00000000
--- a/SemanticForms/includes/SF_FormUtils.php
+++ /dev/null
@@ -1,612 +0,0 @@
-<?php
-/**
- * Javascript- and HTML-creation utilities for the display of a form
- *
- * @author Yaron Koren
- * @author Jeffrey Stuckman
- * @author Harold Solbrig
- * @author Eugene Mednikov
- * @file
- * @ingroup SF
- */
-
-class SFFormUtils {
- static function setGlobalJSVariables( &$vars ) {
- global $sfgAutocompleteValues, $sfgAutocompleteOnAllChars;
- global $sfgFieldProperties, $sfgDependentFields;
- global $sfgShowOnSelect, $sfgScriptPath;
- global $edgValues, $sfgEDSettings;
-// global $sfgInitJSFunctions, $sfgValidationJSFunctions;
-
- $vars['sfgAutocompleteValues'] = $sfgAutocompleteValues;
- $vars['sfgAutocompleteOnAllChars'] = $sfgAutocompleteOnAllChars;
- $vars['sfgFieldProperties'] = $sfgFieldProperties;
- $vars['sfgDependentFields'] = $sfgDependentFields;
- $vars['sfgShowOnSelect'] = $sfgShowOnSelect;
- $vars['sfgScriptPath'] = $sfgScriptPath;
- $vars['edgValues'] = $edgValues;
- $vars['sfgEDSettings'] = $sfgEDSettings;
-// $vars['sfgInitJSFunctions'] = $sfgInitJSFunctions;
-// $vars['sfgValidationJSFunctions'] = $sfgValidationJSFunctions;
-
- return true;
- }
-
- /**
- * Add a hidden input for each field in the template call that's
- * not handled by the form itself
- */
- static function unhandledFieldsHTML( $templateName, $templateContents ) {
- // HTML element names shouldn't contain spaces
- $templateName = str_replace( ' ', '_', $templateName );
- $text = "";
- foreach ( $templateContents as $key => $value ) {
- if ( !is_null( $key ) && !is_numeric( $key ) ) {
- $key = urlencode( $key );
- $text .= Html::hidden( '_unhandled_' . $templateName . '_' . $key, $value );
- }
- }
- return $text;
- }
-
- /**
- * Add unhandled fields back into the template call that the form
- * generates, so that editing with a form will have no effect on them
- */
- static function addUnhandledFields( $templateName ) {
- global $wgRequest;
-
- $templateName = str_replace( ' ', '_', $templateName );
- $prefix = '_unhandled_' . $templateName . '_';
- $prefixSize = strlen( $prefix );
- $additional_template_text = "";
- foreach ( $wgRequest->getValues() as $key => $value ) {
- if ( strpos( $key, $prefix ) === 0 ) {
- $field_name = urldecode( substr( $key, $prefixSize ) );
- $additional_template_text .= "|$field_name=$value\n";
- }
- }
- return $additional_template_text;
- }
-
- static function summaryInputHTML( $is_disabled, $label = null, $attr = array(), $value = '' ) {
- global $sfgTabIndex;
-
- $sfgTabIndex++;
- if ( $label == null )
- $label = wfMessage( 'summary' )->text();
- $disabled_text = ( $is_disabled ) ? " disabled" : "";
- $attr = Html::expandAttributes( $attr );
- $text = <<<END
- <span id='wpSummaryLabel'><label for='wpSummary'>$label</label></span>
- <input tabindex="$sfgTabIndex" type='text' value="$value" name='wpSummary' id='wpSummary' maxlength='200' size='60'$disabled_text$attr/>
-
-END;
- return $text;
- }
-
- static function minorEditInputHTML( $form_submitted, $is_disabled, $is_checked, $label = null, $attrs = array() ) {
- global $sfgTabIndex, $wgUser, $wgParser;
-
- $sfgTabIndex++;
- if ( !$form_submitted ) {
- $is_checked = $wgUser->getOption( 'minordefault' );
- }
-
- if ( $label == null ) {
- $label = $wgParser->recursiveTagParse( wfMessage( 'minoredit' )->text() );
- }
-
- $tooltip = wfMessage( 'tooltip-minoredit' )->text();
- $attrs += array(
- 'id' => 'wpMinoredit',
- 'accesskey' => wfMessage( 'accesskey-minoredit' )->text(),
- 'tabindex' => $sfgTabIndex,
- );
- if ( $is_disabled ) {
- $attrs['disabled'] = true;
- }
- $text = "\t" . Xml::check( 'wpMinoredit', $is_checked, $attrs ) . "\n";
- $text .= "\t" . Html::rawElement( 'label', array(
- 'for' => 'wpMinoredit',
- 'title' => $tooltip
- ), $label ) . "\n";
-
- return $text;
- }
-
- static function watchInputHTML( $form_submitted, $is_disabled, $is_checked = false, $label = null, $attrs = array() ) {
- global $sfgTabIndex, $wgUser, $wgTitle, $wgParser;
-
- $sfgTabIndex++;
- // figure out if the checkbox should be checked -
- // this code borrowed from /includes/EditPage.php
- if ( !$form_submitted ) {
- if ( $wgUser->getOption( 'watchdefault' ) ) {
- # Watch all edits
- $is_checked = true;
- } elseif ( $wgUser->getOption( 'watchcreations' ) && !$wgTitle->exists() ) {
- # Watch creations
- $is_checked = true;
- } elseif ( $wgTitle->userIsWatching() ) {
- # Already watched
- $is_checked = true;
- }
- }
- if ( $label == null )
- $label = $wgParser->recursiveTagParse( wfMessage( 'watchthis' )->text() );
- $attrs += array(
- 'id' => 'wpWatchthis',
- 'accesskey' => wfMessage( 'accesskey-watch' )->text(),
- 'tabindex' => $sfgTabIndex,
- );
- if ( $is_disabled ) {
- $attrs['disabled'] = true;
- }
- $text = "\t" . Xml::check( 'wpWatchthis', $is_checked, $attrs ) . "\n";
- $tooltip = wfMessage( 'tooltip-watch' )->text();
- $text .= "\t" . Html::rawElement( 'label', array(
- 'for' => 'wpWatchthis',
- 'title' => $tooltip
- ), $label ) . "\n";
-
- return $text;
- }
-
- /**
- * Helper function to display a simple button
- */
- static function buttonHTML( $name, $value, $type, $attrs ) {
- return "\t\t" . Html::input( $name, $value, $type, $attrs ) . "\n";
- }
-
- static function saveButtonHTML( $is_disabled, $label = null, $attr = array() ) {
- global $sfgTabIndex;
-
- $sfgTabIndex++;
- if ( $label == null ) {
- $label = wfMessage( 'savearticle' )->text();
- }
- $temp = $attr + array(
- 'id' => 'wpSave',
- 'tabindex' => $sfgTabIndex,
- 'accesskey' => wfMessage( 'accesskey-save' )->text(),
- 'title' => wfMessage( 'tooltip-save' )->text(),
- );
- if ( $is_disabled ) {
- $temp['disabled'] = true;
- }
- return self::buttonHTML( 'wpSave', $label, 'submit', $temp );
- }
-
- static function saveAndContinueButtonHTML( $is_disabled, $label = null, $attr = array() ) {
- global $sfgTabIndex;
-
- $sfgTabIndex++;
-
- if ( $label == null ) {
- $label = wfMessage( 'sf_formedit_saveandcontinueediting' )->text();
- }
-
- $temp = $attr + array(
- 'id' => 'wpSaveAndContinue',
- 'tabindex' => $sfgTabIndex,
- 'disabled' => true,
- 'accesskey' => wfMessage( 'sf_formedit_accesskey_saveandcontinueediting' )->text(),
- 'title' => wfMessage( 'sf_formedit_tooltip_saveandcontinueediting' )->text(),
- );
-
- if ( $is_disabled ) {
- $temp['class'] = 'sf-save_and_continue disabled';
- } else {
- $temp['class'] = 'sf-save_and_continue';
- }
-
- return self::buttonHTML( 'wpSaveAndContinue', $label, 'button', $temp );
- }
-
- static function showPreviewButtonHTML( $is_disabled, $label = null, $attr = array() ) {
- global $sfgTabIndex;
-
- $sfgTabIndex++;
- if ( $label == null ) {
- $label = wfMessage( 'showpreview' )->text();
- }
- $temp = $attr + array(
- 'id' => 'wpPreview',
- 'tabindex' => $sfgTabIndex,
- 'accesskey' => wfMessage( 'accesskey-preview' )->text(),
- 'title' => wfMessage( 'tooltip-preview' )->text(),
- );
- if ( $is_disabled ) {
- $temp['disabled'] = true;
- }
- return self::buttonHTML( 'wpPreview', $label, 'submit', $temp );
- }
-
- static function showChangesButtonHTML( $is_disabled, $label = null, $attr = array() ) {
- global $sfgTabIndex;
-
- $sfgTabIndex++;
- if ( $label == null ) {
- $label = wfMessage( 'showdiff' )->text();
- }
- $temp = $attr + array(
- 'id' => 'wpDiff',
- 'tabindex' => $sfgTabIndex,
- 'accesskey' => wfMessage( 'accesskey-diff' )->text(),
- 'title' => wfMessage( 'tooltip-diff' )->text(),
- );
- if ( $is_disabled ) {
- $temp['disabled'] = true;
- }
- return self::buttonHTML( 'wpDiff', $label, 'submit', $temp );
- }
-
- static function cancelLinkHTML( $is_disabled, $label = null, $attr = array() ) {
- global $wgTitle, $wgParser;
-
- if ( $label == null ) {
- $label = $wgParser->recursiveTagParse( wfMessage( 'cancel' )->text() );
- }
- if ( $wgTitle == null ) {
- $cancel = '';
- }
- // if we're on the special 'FormEdit' page, just send the user
- // back to the previous page they were on
- elseif ( $wgTitle->isSpecial( 'FormEdit' ) ) {
- $stepsBack = 1;
- // For IE, we need to go back twice, past the redirect.
- if ( array_key_exists( 'HTTP_USER_AGENT', $_SERVER ) &&
- stristr( $_SERVER['HTTP_USER_AGENT'], "msie" ) ) {
- $stepsBack = 2;
- }
- $cancel = "<a href=\"javascript:history.go(-$stepsBack);\">$label</a>";
- } else {
- $cancel = Linker::link( $wgTitle, $label, array(), array(), 'known' );
- }
- return "\t\t" . Html::rawElement( 'span', array( 'class' => 'editHelp' ), $cancel ) . "\n";
- }
-
- static function runQueryButtonHTML( $is_disabled = false, $label = null, $attr = array() ) {
- // is_disabled is currently ignored
- global $sfgTabIndex;
-
- $sfgTabIndex++;
- if ( $label == null ) {
- $label = wfMessage( 'runquery' )->text();
- }
- return self::buttonHTML( 'wpRunQuery', $label, 'submit',
- $attr + array(
- 'id' => 'wpRunQuery',
- 'tabindex' => $sfgTabIndex,
- 'title' => $label,
- ) );
- }
-
- // Much of this function is based on MediaWiki's EditPage::showEditForm()
- static function formBottom( $form_submitted, $is_disabled ) {
- global $wgUser;
-
- $summary_text = SFFormUtils::summaryInputHTML( $is_disabled );
- $text = <<<END
- <br /><br />
- <div class='editOptions'>
-$summary_text <br />
-
-END;
- if ( $wgUser->isAllowed( 'minoredit' ) ) {
- $text .= SFFormUtils::minorEditInputHTML( $form_submitted, $is_disabled, false );
- }
-
- if ( $wgUser->isLoggedIn() ) {
- $text .= SFFormUtils::watchInputHTML( $form_submitted, $is_disabled );
- }
-
- $text .= <<<END
- <br />
- <div class='editButtons'>
-
-END;
- $text .= SFFormUtils::saveButtonHTML( $is_disabled );
- $text .= SFFormUtils::showPreviewButtonHTML( $is_disabled );
- $text .= SFFormUtils::showChangesButtonHTML( $is_disabled );
- $text .= SFFormUtils::cancelLinkHTML( $is_disabled );
- $text .= <<<END
- </div><!-- editButtons -->
- </div><!-- editOptions -->
-
-END;
- return $text;
- }
-
- // based on MediaWiki's EditPage::getPreloadedText()
- static function getPreloadedText( $preload ) {
- if ( $preload === '' ) {
- return '';
- } else {
- $preloadTitle = Title::newFromText( $preload );
- if ( isset( $preloadTitle ) && $preloadTitle->userCan( 'read' ) ) {
- $rev = Revision::newFromTitle( $preloadTitle );
- if ( is_object( $rev ) ) {
- $text = $rev->getText();
- // Remove <noinclude> sections and <includeonly> tags from text
- $text = StringUtils::delimiterReplace( '<noinclude>', '</noinclude>', '', $text );
- $text = strtr( $text, array( '<includeonly>' => '', '</includeonly>' => '' ) );
- return $text;
- }
- }
- return '';
- }
- }
-
- /**
- * Used by 'RunQuery' page
- */
- static function queryFormBottom() {
- return self::runQueryButtonHTML( false );
- }
-
- static function getMonthNames() {
- return array(
- wfMessage( 'january' )->inContentLanguage()->text(),
- wfMessage( 'february' )->inContentLanguage()->text(),
- wfMessage( 'march' )->inContentLanguage()->text(),
- wfMessage( 'april' )->inContentLanguage()->text(),
- // Needed to avoid using 3-letter abbreviation
- wfMessage( 'may_long' )->inContentLanguage()->text(),
- wfMessage( 'june' )->inContentLanguage()->text(),
- wfMessage( 'july' )->inContentLanguage()->text(),
- wfMessage( 'august' )->inContentLanguage()->text(),
- wfMessage( 'september' )->inContentLanguage()->text(),
- wfMessage( 'october' )->inContentLanguage()->text(),
- wfMessage( 'november' )->inContentLanguage()->text(),
- wfMessage( 'december' )->inContentLanguage()->text()
- );
- }
-
- /**
- * Parse the form definition and return it
- */
- public static function getFormDefinition( Parser $parser, $form_def = null, $form_id = null ) {
- if ( $form_id !== null ) {
- $cachedDef = self::getFormDefinitionFromCache( $form_id, $parser );
-
- if ( $cachedDef !== null ) {
- return $cachedDef;
- }
- }
-
- if ( $form_id !== null ) {
- $form_title = Title::newFromID( $form_id );
- $form_def = SFUtils::getPageText( $form_title );
- } elseif ( $form_def == null ) {
- // No id, no text -> nothing to do
-
- return '';
- }
-
- // Remove <noinclude> sections and <includeonly> tags from form definition
- $form_def = StringUtils::delimiterReplace( '<noinclude>', '</noinclude>', '', $form_def );
- $form_def = strtr( $form_def, array( '<includeonly>' => '', '</includeonly>' => '' ) );
-
- // We need to replace all SF tags in the form definition by strip items. But we can not just use
- // the Parser strip state because the Parser would during parsing replace all strip items and then
- // mangle them into HTML code. So we have to use our own. Which means we also can not just use
- // Parser::insertStripItem() (see below).
- $prefix = "\x7fUNIQ" . Parser::getRandomString();
- $stripState = new StripState( $prefix );
-
- // This regexp will find any SF triple braced tags (including correct handling of contained braces), i.e.
- // {{{field|foo|default={{Bar}}}}} is not a problem. When used with preg_match and friends, $matches[0] will
- // contain the whole SF tag, $matches[1] will contain the tag without the enclosing triple braces.
- $regexp = '#\{\{\{((?>[^\{\}]+)|(\{((?>[^\{\}]+)|(?-2))*\}))*\}\}\}#';
-
- // replace all SF tags by strip markers
- $form_def = preg_replace_callback(
- $regexp,
-
- // This is essentially a copy of Parser::insertStripItem().
- // The 'use' keyword will bump the minimum PHP version to 5.3
- function ( array $matches ) use ( $stripState, $prefix ) {
-
- static $markerIndex = 0;
- $rnd = "$prefix-item-$markerIndex-" . Parser::MARKER_SUFFIX;
- $markerIndex++;
- $stripState->addGeneral( $rnd, $matches[ 0 ] );
-
- return $rnd;
-
- },
-
- $form_def
- );
-
- $title = is_object( $parser->getTitle() ) ? $parser->getTitle() : new Title();
-
- // parse wiki-text
- $output = $parser->parse( $form_def, $title, $parser->getOptions() );
- $form_def = $stripState->unstripGeneral( $output->getText() );
-
- if ( $output->getCacheTime() == -1 ) {
- $form_article = Article::newFromID( $form_id );
- self::purgeCache( $form_article );
- wfDebug( "Caching disabled for form definition $form_id\n" );
- } elseif ( $form_id !== null ) {
- self::cacheFormDefinition( $form_id, $form_def, $parser );
- }
-
- return $form_def;
- }
-
- /**
- * Get a form definition from cache
- */
- protected static function getFormDefinitionFromCache( $form_id, Parser $parser ) {
- global $sfgCacheFormDefinitions;
-
- // use cache if allowed
- if ( !$sfgCacheFormDefinitions ) {
- return null;
- }
-
- $cache = self::getFormCache();
-
- // create a cache key consisting of owner name, article id and user options
- $cacheKeyForForm = self::getCacheKey( $form_id, $parser );
-
- $cached_def = $cache->get( $cacheKeyForForm );
-
- // Cache hit?
- if ( is_string( $cached_def ) ) {
- wfDebug( "Cache hit: Got form definition $cacheKeyForForm from cache\n" );
-
- return $cached_def;
- }
-
- wfDebug( "Cache miss: Form definition $cacheKeyForForm not found in cache\n" );
-
- return null;
- }
-
- /**
- * Store a form definition in cache
- */
- protected static function cacheFormDefinition( $form_id, $form_def, Parser $parser ) {
- global $sfgCacheFormDefinitions;
-
- // Store in cache if requested
- if ( !$sfgCacheFormDefinitions ) {
- return;
- }
-
- $cache = self::getFormCache();
- $cacheKeyForForm = self::getCacheKey( $form_id, $parser );
- $cacheKeyForList = self::getCacheKey( $form_id );
-
- // Update list of form definitions
- $listOfFormKeys = $cache->get( $cacheKeyForList );
- // The list of values is used by self::purge, keys are ignored.
- // This way we automatically override duplicates.
- $listOfFormKeys[$cacheKeyForForm] = $cacheKeyForForm;
-
- // We cache indefinitely ignoring $wgParserCacheExpireTime.
- // The reasoning is that there really is not point in expiring
- // rarely changed forms automatically (after one day per
- // default). Instead the cache is purged on storing/purging a
- // form definition.
-
- // Store form definition with current user options
- $cache->set( $cacheKeyForForm, $form_def );
-
- // Store updated list of form definitions
- $cache->set( $cacheKeyForList, $listOfFormKeys );
- wfDebug( "Cached form definition $cacheKeyForForm\n" );
- }
-
- /**
- * Deletes the form definition associated with the given wiki page
- * from the main cache.
- *
- * Hooks: ArticlePurge, ArticleSave
- *
- * @param Page $wikipage
- * @return bool
- */
- public static function purgeCache( Page $wikipage ) {
- if ( !$wikipage->getTitle()->inNamespace( SF_NS_FORM ) ) {
- return true;
- }
-
- $cache = self::getFormCache();
- $cacheKeyForList = self::getCacheKey( $wikipage->getId() );
-
- // get references to stored datasets
- $listOfFormKeys = $cache->get( $cacheKeyForList );
-
- if ( !is_array( $listOfFormKeys ) ) {
- return true;
- }
-
- // delete stored datasets
- foreach ( $listOfFormKeys as $key ) {
- $cache->delete( $key );
- wfDebug( "Deleted cached form definition $key.\n" );
- }
-
- // delete references to datasets
- $cache->delete( $cacheKeyForList );
- wfDebug( "Deleted cached form definition references $cacheKeyForList.\n" );
-
- return true;
- }
-
- /**
- * Get the cache object used by the form cache
- */
- public static function getFormCache() {
- global $sfgFormCacheType, $wgParserCacheType;
- $ret = wfGetCache( ( $sfgFormCacheType !== null ) ? $sfgFormCacheType : $wgParserCacheType );
- return $ret;
- }
-
-
- /**
- * Get a cache key.
- *
- * @param string $formId
- * @param Parser $parser Provide parser to get unique cache key
- * @return string
- */
- public static function getCacheKey( $formId, $parser = null ) {
- if ( is_null( $parser ) ) {
- return wfMemcKey( 'ext.SemanticForms.formdefinition', $formId );
- } else {
- $optionsHash = $parser->getOptions()->optionsHash( ParserOptions::legacyOptions() );
- return wfMemcKey( 'ext.SemanticForms.formdefinition', $formId, $optionsHash );
- }
- }
-
- /*
- * Get section header HTML
- */
- static function headerHTML( $header_name , $header_level = 2 ) {
-
- global $sfgTabIndex;
-
- $sfgTabIndex++;
- $text = "";
-
- if ( !is_numeric( $header_level ) ) {
- // The default header level is set to 2
- $header_level = 2;
- }
-
- $header_level = min( $header_level, 6 );
- $elementName = 'h'. $header_level;
- $text = Html::rawElement( $elementName, array(), $header_name );
- return $text;
- }
-
- /**
- * Get the changed index if a new template or section was
- * inserted before the end, or one was deleted in the form
- */
- static function getChangedIndex( $i, $new_item_loc, $deleted_item_loc ) {
- $old_i = $i;
- if ( $new_item_loc != null ) {
- if ( $i > $new_item_loc ) {
- $old_i = $i - 1;
- } elseif ( $i == $new_item_loc ) {
- // it's the new template; it shouldn't
- // get any query-string data
- $old_i = - 1;
- }
- } elseif ( $deleted_item_loc != null ) {
- if ( $i >= $deleted_item_loc ) {
- $old_i = $i + 1;
- }
- }
- return $old_i;
- }
-}
diff --git a/SemanticForms/includes/SF_HelperFormAction.php b/SemanticForms/includes/SF_HelperFormAction.php
deleted file mode 100644
index f41bd4d5..00000000
--- a/SemanticForms/includes/SF_HelperFormAction.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-/**
- * Handles the formcreate action - used for helper forms for creating
- * properties, forms, etc..
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-class SFHelperFormAction extends Action
-{
- /**
- * Return the name of the action this object responds to
- * @return String lowercase
- */
- public function getName(){
- return 'formcreate';
- }
-
- /**
- * The main action entry point. Do all output for display and send it to the context
- * output. Do not use globals $wgOut, $wgRequest, etc, in implementations; use
- * $this->getOutput(), etc.
- * @throws ErrorPageError
- */
- public function show(){
- return self::displayForm($this, $this->page);
- }
-
- /**
- * Execute the action in a silent fashion: do not display anything or release any errors.
- * @return Bool whether execution was successful
- */
- public function execute(){
- return true;
- }
-
- /**
- * Adds an "action" (i.e., a tab) to edit the current article with
- * a form
- */
- static function displayTab( $obj, &$content_actions ) {
- if ( method_exists ( $obj, 'getTitle' ) ) {
- $title = $obj->getTitle();
- } else {
- $title = $obj->mTitle;
- }
- // Make sure that this page is in one of the relevant
- // namespaces, and that it doesn't exist yet.
- if ( !isset( $title ) ||
- ( !in_array( $title->getNamespace(), array( SMW_NS_PROPERTY, NS_TEMPLATE, SF_NS_FORM, NS_CATEGORY ) ) ) ) {
- return true;
- }
- if ( $title->exists() ) {
- return true;
- }
-
- // The tab should show up automatically for properties and
- // forms, but not necessarily for templates and categories,
- // since some of them might be outside of the SMW/SF system.
- if ( in_array( $title->getNamespace(), array( NS_TEMPLATE, NS_CATEGORY ) ) ) {
- global $sfgShowTabsForAllHelperForms;
- if ( !$sfgShowTabsForAllHelperForms ) { return true; }
- }
-
- global $wgRequest, $wgUser;
-
- if ( $wgUser->isAllowed( 'edit' ) && $title->userCan( 'edit' ) ) {
- $form_create_tab_text = 'sf_formcreate';
- } else {
- $form_create_tab_text = 'sf_viewform';
- }
- $class_name = ( $wgRequest->getVal( 'action' ) == 'formcreate' ) ? 'selected' : '';
- $form_create_tab = array(
- 'class' => $class_name,
- 'text' => wfMessage( $form_create_tab_text )->text(),
- 'href' => $title->getLocalURL( 'action=formcreate' )
- );
-
- // Find the location of the 'create' tab, and add 'create
- // with form' right before it.
- // This is a "key-safe" splice - it preserves both the keys
- // and the values of the array, by editing them separately
- // and then rebuilding the array. Based on the example at
- // http://us2.php.net/manual/en/function.array-splice.php#31234
- $tab_keys = array_keys( $content_actions );
- $tab_values = array_values( $content_actions );
- $edit_tab_location = array_search( 'edit', $tab_keys );
-
- // If there's no 'edit' tab, look for the 'view source' tab
- // instead.
- if ( $edit_tab_location == null ) {
- $edit_tab_location = array_search( 'viewsource', $tab_keys );
- }
-
- // This should rarely happen, but if there was no edit *or*
- // view source tab, set the location index to -1, so the
- // tab shows up near the end.
- if ( $edit_tab_location == null ) {
- $edit_tab_location = - 1;
- }
- array_splice( $tab_keys, $edit_tab_location, 0, 'form_edit' );
- array_splice( $tab_values, $edit_tab_location, 0, array( $form_create_tab ) );
- $content_actions = array();
- for ( $i = 0; $i < count( $tab_keys ); $i++ ) {
- $content_actions[$tab_keys[$i]] = $tab_values[$i];
- }
-
- global $wgUser;
- if ( ! $wgUser->isAllowed( 'viewedittab' ) ) {
- // The tab can have either of these two actions.
- unset( $content_actions['edit'] );
- unset( $content_actions['viewsource'] );
- }
-
- return true; // always return true, in order not to stop MW's hook processing!
- }
-
- /**
- * Like displayTab(), but called with a different hook - this one is
- * called for the 'Vector' skin, and others.
- */
- static function displayTab2( $obj, &$links ) {
- // the old '$content_actions' array is thankfully just a
- // sub-array of this one
- return self::displayTab( $obj, $links['views'] );
- }
-
- /**
- * The function called if we're in index.php (as opposed to one of the
- * special pages).
- */
- static function displayForm( $action, $article ) {
- $title = $article->getTitle();
- if ( $title->getNamespace() == SMW_NS_PROPERTY ) {
- $createPropertyPage = new SFCreateProperty();
- $createPropertyPage->execute( $title->getText() );
- } elseif ( $title->getNamespace() == NS_TEMPLATE ) {
- $createTemplatePage = new SFCreateTemplate();
- $createTemplatePage->execute( $title->getText() );
- } elseif ( $title->getNamespace() == SF_NS_FORM ) {
- $createFormPage = new SFCreateForm();
- $createFormPage->execute( $title->getText() );
- } elseif ( $title->getNamespace() == NS_CATEGORY ) {
- $createCategoryPage = new SFCreateCategory();
- $createCategoryPage->execute( $title->getText() );
- }
-
- return false;
- }
-}
diff --git a/SemanticForms/includes/SF_PageSchemas.php b/SemanticForms/includes/SF_PageSchemas.php
deleted file mode 100644
index 683c2bf4..00000000
--- a/SemanticForms/includes/SF_PageSchemas.php
+++ /dev/null
@@ -1,933 +0,0 @@
-<?php
-/**
- * Static functions for Semantic Forms, for use by the Page Schemas
- * extension.
- *
- * @author Yaron Koren
- * @author Ankit Garg
- * @file
- * @ingroup SF
- */
-
-class SFPageSchemas extends PSExtensionHandler {
- public static function registerClass() {
- global $wgPageSchemasHandlerClasses;
- $wgPageSchemasHandlerClasses[] = 'SFPageSchemas';
- return true;
- }
-
- /**
- * Creates an object to hold form-wide information, based on an XML
- * object from the Page Schemas extension.
- */
- public static function createPageSchemasObject( $tagName, $xml ) {
- $sfarray = array();
-
- if( $tagName == "standardInputs" ) {
- foreach ( $xml->children() as $tag => $child ) {
- foreach ( $child->children() as $tag => $formelem ) {
- if ( $tag == $tagName ) {
- foreach( $formelem->attributes() as $attr => $name) {
- $sfarray[$attr] = (string)$formelem->attributes()->$attr;
- }
- }
- }
- return $sfarray;
- }
- }
-
- if ( $tagName == "semanticforms_Form" ) {
- foreach ( $xml->children() as $tag => $child ) {
- if ( $tag == $tagName ) {
- $formName = (string)$child->attributes()->name;
- $sfarray['name'] = $formName;
- foreach ( $child->children() as $tag => $formelem ) {
- $sfarray[$tag] = (string)$formelem;
- }
- return $sfarray;
- }
- }
- }
- if ( $tagName == "semanticforms_TemplateDetails" ) {
- foreach ( $xml->children() as $tag => $child ) {
- if ( $tag == $tagName ) {
- foreach ( $child->children() as $tag => $formelem ) {
- $sfarray[$tag] = (string)$formelem;
- }
- return $sfarray;
- }
- }
- }
- if ( $tagName == "semanticforms_FormInput" || $tagName == "semanticforms_PageSection" ) {
- foreach ( $xml->children() as $tag => $child ) {
- if ( $tag == $tagName ) {
- foreach ( $child->children() as $prop ) {
- if ( $prop->getName() == 'InputType' ) {
- $sfarray[$prop->getName()] = (string)$prop;
- } else {
- if ( (string)$prop->attributes()->name == '' ) {
- $sfarray[$prop->getName()] = (string)$prop;
- } else {
- $sfarray[(string)$prop->attributes()->name] = (string)$prop;
- }
- }
- }
- return $sfarray;
- }
- }
- }
- return null;
- }
-
- /**
- * Creates Page Schemas XML for form-wide information.
- */
- public static function createSchemaXMLFromForm() {
- global $wgRequest;
-
- $formName = null;
- $xml = '';
- $isStandardInputsOpen = false;
- foreach ( $wgRequest->getValues() as $var => $val ) {
- $val = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), $val );
- if ( $var == 'sf_form_name' ) {
- $formName = $val;
- } elseif ( $var == 'sf_page_name_formula' ) {
- if ( !empty( $val ) ) {
- $val = Xml::escapeTagsOnly( $val );
- $xml .= '<PageNameFormula>' . $val . '</PageNameFormula>';
- }
- } elseif ( $var == 'sf_create_title' ) {
- if ( !empty( $val ) ) {
- $xml .= '<CreateTitle>' . $val . '</CreateTitle>';
- }
- } elseif ( $var == 'sf_edit_title' ) {
- if ( !empty( $val ) ) {
- $xml .= '<EditTitle>' . $val . '</EditTitle>';
- }
- } elseif ( $var == 'sf_fi_free_text_label' ) {
- $isStandardInputsOpen = true;
- $xml .= '<standardInputs ';
- if ( !empty( $val ) ) {
- $xml .= 'freeTextLabel="' . Xml::escapeTagsOnly( $val ) . '" ';
- }
- } /* Options */ elseif ( $var == 'sf_fi_free_text' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputFreeText="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_summary' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputSummary="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_minor_edit' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputMinorEdit="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_watch' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputWatch="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_save' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputSave="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_preview' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputPreview="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_changes' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputChanges="' . $val . '" ';
- }
- } elseif ( $var == 'sf_fi_cancel' ) {
- if ( !empty( $val ) ) {
- $xml .= 'inputCancel="' . $val . '"';
- }
- }
- }
- if ( $isStandardInputsOpen ) {
- $isStandardInputsOpen = false;
- $xml .= ' />';
- }
- $xml = '<semanticforms_Form name="' . $formName . '" >' . $xml;
- $xml .= '</semanticforms_Form>';
- return $xml;
- }
-
- /**
- * Creates Page Schemas XML from form information on templates.
- */
- public static function createTemplateXMLFromForm() {
- global $wgRequest;
-
- $xmlPerTemplate = array();
- $templateNum = -1;
- foreach ( $wgRequest->getValues() as $var => $val ) {
- $val = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), $val );
- if ( substr( $var, 0, 18 ) == 'sf_template_label_' ) {
- $templateNum = substr( $var, 18 );
- $xml = '<semanticforms_TemplateDetails>';
- if ( !empty( $val ) ) {
- $xml .= "<Label>$val</Label>";
- }
- } elseif ( substr( $var, 0, 23 ) == 'sf_template_addanother_' ) {
- if ( !empty( $val ) ) {
- $xml .= "<AddAnotherText>$val</AddAnotherText>";
- }
- $xml .= '</semanticforms_TemplateDetails>';
- $xmlPerTemplate[$templateNum] = $xml;
- }
- }
- return $xmlPerTemplate;
- }
-
- /**
- * Creates Page Schemas XML for form fields.
- */
- public static function createFieldXMLFromForm() {
- global $wgRequest;
-
- $xmlPerField = array();
- $fieldNum = -1;
- foreach ( $wgRequest->getValues() as $var => $val ) {
- $val = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), $val );
- if ( substr( $var, 0, 14 ) == 'sf_input_type_' ) {
- $fieldNum = substr( $var, 14 );
- $xml = '<semanticforms_FormInput>';
- if ( !empty( $val ) ) {
- $xml .= '<InputType>' . $val . '</InputType>';
- }
- } elseif ( substr( $var, 0, 14 ) == 'sf_key_values_' ) {
- $xml .= self::createFormInputXMLFromForm( $val );
- } elseif ( substr( $var, 0, 14 ) == 'sf_input_befo_' ) {
- if ( $val !== '' ) {
- $xml .= '<TextBeforeField>' . $val . '</TextBeforeField>';
- }
- } elseif ( substr( $var, 0, 14 ) == 'sf_input_desc_' ) {
- if ( $val !== '' ) {
- $xml .= '<Description>' . $val . '</Description>';
- }
- } elseif ( substr( $var, 0, 18 ) == 'sf_input_desctool_' ) {
- if ( $val !== '' ) {
- $xml .= '<DescriptionTooltipMode>' . $val . '</DescriptionTooltipMode>';
- }
- } elseif ( substr( $var, 0, 16 ) == 'sf_input_finish_' ) {
- // This is a hack.
- $xml .= '</semanticforms_FormInput>';
- $xmlPerField[$fieldNum] = $xml;
- }
- }
- return $xmlPerField;
- }
-
- /**
- * Creates Page Schemas XML for page sections
- */
- public static function createPageSectionXMLFromForm() {
- global $wgRequest;
- $xmlPerPageSection = array();
- $pageSectionNum = -1;
-
- foreach ( $wgRequest->getValues() as $var => $val ) {
- $val = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), $val );
- if ( substr( $var, 0, 26 ) == 'sf_pagesection_key_values_' ) {
- $pageSectionNum = substr( $var, 26 );
- $xml = "";
- if ( $val != '' ) {
- $xml = '<semanticforms_PageSection>';
- $xml .= self::createFormInputXMLFromForm( $val );
- $xml .= '</semanticforms_PageSection>';
- }
- $xmlPerPageSection[$pageSectionNum] = $xml;
- }
- }
- return $xmlPerPageSection;
- }
-
- static function createFormInputXMLFromForm( $valueFromForm ) {
- $xml = '';
- if ( $valueFromForm !== '' ) {
- // replace the comma substitution character that has no chance of
- // being included in the values list - namely, the ASCII beep
- $listSeparator = ',';
- $key_values_str = str_replace( "\\$listSeparator", "\a", $valueFromForm );
- $key_values_array = explode( $listSeparator, $key_values_str );
- foreach ( $key_values_array as $value ) {
- // replace beep back with comma, trim
- $value = str_replace( "\a", $listSeparator, trim( $value ) );
- $param_value = explode( "=", $value, 2 );
- if ( count( $param_value ) == 2 && $param_value[1] != null ) {
- // Handles <Parameter name="size">20</Parameter>
- $xml .= '<Parameter name="' . $param_value[0] . '">' . $param_value[1] . '</Parameter>';
- } else {
- // Handles <Parameter name="mandatory" />
- $xml .= '<Parameter name="' . $param_value[0] . '"/>';
- }
- }
- }
- return $xml;
- }
-
- public static function getDisplayColor() {
- return '#CF9';
- }
-
- public static function getSchemaDisplayString() {
- return 'Form';
- }
-
- public static function getSchemaEditingHTML( $pageSchemaObj ) {
- $form_array = array();
- $hasExistingValues = false;
- if ( !is_null( $pageSchemaObj ) ) {
- $form_array = $pageSchemaObj->getObject( 'semanticforms_Form' );
- if ( !is_null( $form_array ) ) {
- $hasExistingValues = true;
- }
- }
-
- // Get all the values from the page schema.
- $formName = PageSchemas::getValueFromObject( $form_array, 'name' );
- $pageNameFormula = PageSchemas::getValueFromObject( $form_array, 'PageNameFormula' );
- $createTitle = PageSchemas::getValueFromObject( $form_array, 'CreateTitle' );
- $editTitle = PageSchemas::getValueFromObject( $form_array, 'EditTitle' );
-
- //Inputs
- if ( !is_null( $pageSchemaObj ) ) {
- $standardInputs = $pageSchemaObj->getObject( 'standardInputs' );
- } else {
- $standardInputs = array();
- }
-
- $freeTextLabel = html_entity_decode( PageSchemas::getValueFromObject( $form_array, 'freeTextLabel' ) );
-
- $text = "\t<p>" . wfMessage( 'ps-namelabel' )->escaped() . ' ' . Html::input( 'sf_form_name', $formName, 'text', array( 'size' => 15 ) ) . "</p>\n";
- // The checkbox isn't actually a field in the page schema -
- // we set it based on whether or not a page formula has been
- // specified.
- $twoStepProcessAttrs = array( 'id' => 'sf-two-step-process' );
- if ( is_null( $pageNameFormula ) ) {
- $twoStepProcessAttrs['checked'] = true;
- }
- $text .= '<p>' . Html::input( 'sf_two_step_process', null, 'checkbox', $twoStepProcessAttrs );
- $text .= ' Users must enter the page name before getting to the form (default)';
- $text .= "</p>\n";
- $text .= '<div class="editSchemaMinorFields">';
- $text .= "\t<p id=\"sf-page-name-formula\">" . wfMessage( 'sf-pageschemas-pagenameformula' )->escaped() . ' ' . Html::input( 'sf_page_name_formula', $pageNameFormula, 'text', array( 'size' => 30 ) ) . "</p>\n";
- $text .= "\t<p>" . wfMessage( 'sf-pageschemas-createtitle' )->escaped() . ' ' . Html::input( 'sf_create_title', $createTitle, 'text', array( 'size' => 25 ) ) . "</p>\n";
- $text .= "\t<p id=\"sf-edit-title\">" . wfMessage( 'sf-pageschemas-edittitle' )->escaped() . ' ' . Html::input( 'sf_edit_title', $editTitle, 'text', array( 'size' => 25 ) ) . "</p>\n";
-
- $text .= "Free text label: " . Html::input( 'sf_fi_free_text_label', ( ( empty( $freeTextLabel ) ) ? wfMessage( 'sf_form_freetextlabel' )->inContentLanguage()->text() : $freeTextLabel ), 'text' ) . "</p><p>";
-
- //Inputs
- $text .= "<p>Define form buttons and inputs (all will be enabled if none are selected): &nbsp;</p><p>";
-
- // Free text
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_free_text', '1', 'checkbox', array( 'id' => 'sf_fi_free_text', 'checked' => ( isset( $standardInputs['inputFreeText'])) ? $standardInputs['inputFreeText'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_free_text' ), 'Free text input' );
- $text .= "&nbsp;</span>";
- // Summary
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_summary', '1', 'checkbox', array( 'id' => 'sf_fi_summary', 'checked' => ( isset( $standardInputs['inputSummary'] ) ) ? $standardInputs['inputSummary'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_summary' ), 'Summary input' );
- $text .= "&nbsp;</span>";
- // Minor edit
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_minor_edit', '1', 'checkbox', array( 'id' => 'sf_fi_minor_edit', 'checked' => ( isset( $standardInputs['inputMinorEdit'] ) ) ? $standardInputs['inputMinorEdit'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_minor_edit' ), 'Minor edit input' );
- $text .= "&nbsp;</span>";
- // Watch
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_watch', '1', 'checkbox', array( 'id' => 'sf_fi_watch', 'checked' => ( isset( $standardInputs['inputWatch'] ) ) ? $standardInputs['inputWatch'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_watch' ), 'Watch input' );
- $text .= "&nbsp;</span>";
- // Save
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_save', '1', 'checkbox', array( 'id' => 'sf_fi_save', 'checked' => ( isset( $standardInputs['inputSave'] ) ) ? $standardInputs['inputSave'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_save' ), 'Save input' );
- $text .= "&nbsp;</span>";
- // Preview
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_preview', '1', 'checkbox', array( 'id' => 'sf_fi_preview', 'checked' => ( isset( $standardInputs['inputPreview'] ) ) ? $standardInputs['inputPreview'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_preview' ), 'Preview input' );
- $text .= "&nbsp;</span>";
- // Changes
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_changes', '1', 'checkbox', array( 'id' => 'sf_fi_changes', 'checked' => ( isset( $standardInputs['inputChanges'] ) ) ? $standardInputs['inputChanges'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_changes' ), 'Changes input' );
- $text .= "&nbsp;</span>";
- // Cancel
- $text .= '<span>';
- $text .= Html::input( 'sf_fi_cancel', '1', 'checkbox', array( 'id' => 'sf_fi_cancel', 'checked' => ( isset( $standardInputs['inputCancel'] ) ) ? $standardInputs['inputCancel'] : null ) );
- $text .= Html::rawElement( 'label', array( 'for' => 'sf_fi_cancel' ), 'Cancel input' );
- $text .= "&nbsp;</span>";
-
- $text .= "</p>";
- $text .= "</div>\n";
-
- // Separately, add Javascript for getting the checkbox to
- // hide certain fields.
- $jsText = <<<END
-<script type="text/javascript">
-jQuery.fn.toggleFormDataDisplay = function() {
- if (jQuery(this).is(":checked")) {
- jQuery('#sf-page-name-formula').css('display', 'none');
- jQuery('#sf-edit-title').css('display', 'block');
- } else {
- jQuery('#sf-page-name-formula').css('display', 'block');
- jQuery('#sf-edit-title').css('display', 'none');
- }
-}
-jQuery('#sf-two-step-process').toggleFormDataDisplay();
-jQuery('#sf-two-step-process').click( function() {
- jQuery(this).toggleFormDataDisplay();
-} );
-</script>
-
-END;
- global $wgOut;
- $wgOut->addScript( $jsText );
-
- return array( $text, $hasExistingValues );
- }
-
- public static function getTemplateEditingHTML( $psTemplate ) {
- $hasExistingValues = false;
- $templateLabel = null;
- $addAnotherText = null;
- if ( !is_null( $psTemplate ) ) {
- $form_array = $psTemplate->getObject( 'semanticforms_TemplateDetails' );
- if ( !is_null( $form_array ) ) {
- $hasExistingValues = true;
- $templateLabel = PageSchemas::getValueFromObject( $form_array, 'Label' );
- $addAnotherText = PageSchemas::getValueFromObject( $form_array, 'AddAnotherText' );
- }
- }
-
- $text = "\t<p>" . "The following fields are useful if there can be multiple instances of this template." . "</p>\n";
- $text .= "\t<p>" . 'Label:' . ' ' . Html::input( 'sf_template_label_num', $templateLabel, 'text', array( 'size' => 15 ) ) . "</p>\n";
- $text .= "\t<p>" . 'Text of button to add another instance (default is "Add another"):' . ' ' . Html::input( 'sf_template_addanother_num', $addAnotherText, 'text', array( 'size' => 25 ) ) . "</p>\n";
-
- return array( $text, $hasExistingValues );
- }
-
- /**
- * Returns the HTML for inputs to define a single form field,
- * within the Page Schemas 'edit schema' page.
- */
- public static function getFieldEditingHTML( $psField ) {
- $fieldValues = array();
- $hasExistingValues = false;
- $inputType = null;
- $inputDesc = null;
- $inputDescTooltipMode = null;
- $inputBeforeText = null;
- if ( !is_null( $psField ) ) {
- $fieldValues = $psField->getObject( 'semanticforms_FormInput' );
- if ( !is_null( $fieldValues ) ) {
- $hasExistingValues = true;
- $inputType = PageSchemas::getValueFromObject( $fieldValues, 'InputType' );
- $inputDesc = PageSchemas::getValueFromObject( $fieldValues, 'Description' );
- $inputDescTooltipMode = PageSchemas::getValueFromObject( $fieldValues, 'DescriptionTooltipMode' );
- $inputBeforeText = PageSchemas::getValueFromObject( $fieldValues, 'TextBeforeField' );
- } else {
- $fieldValues = array();
- }
- }
-
- global $sfgFormPrinter;
- $possibleInputTypes = $sfgFormPrinter->getAllInputTypes();
- $inputTypeDropdownHTML = Html::element( 'option', null, null );
- foreach ( $possibleInputTypes as $possibleInputType ) {
- $inputTypeOptionAttrs = array();
- if ( $possibleInputType == $inputType ) {
- $inputTypeOptionAttrs['selected'] = true;
- }
- $inputTypeDropdownHTML .= Html::element( 'option', $inputTypeOptionAttrs, $possibleInputType ) . "\n";
- }
- $inputTypeDropdown = Html::rawElement( 'select', array( 'name' => 'sf_input_type_num' ), $inputTypeDropdownHTML );
- $text = '<p>' . wfMessage( 'sf-pageschemas-inputtype' )->escaped() . ' ' . $inputTypeDropdown . '</p>';
-
- $text .= "\t" . '<p>' . wfMessage( 'sf-pageschemas-otherparams', 'size=20, mandatory' )->escaped() . '</p>' . "\n";
- $paramValues = array();
- foreach ( $fieldValues as $param => $value ) {
- if ( !empty( $param ) && $param != 'InputType' && $param != 'Description' && $param != 'DescriptionTooltipMode' && $param != 'TextBeforeField' ) {
- if ( !empty( $value ) ) {
- $paramValues[] = $param . '=' . $value;
- } else {
- $paramValues[] = $param;
- }
- }
- }
- foreach ( $paramValues as $i => $paramAndVal ) {
- $paramValues[$i] = str_replace( ',', '\,', $paramAndVal );
- }
- $param_value_str = implode( ', ', $paramValues );
- $inputParamsAttrs = array( 'size' => 80 );
- $inputParamsInput = Html::input( 'sf_key_values_num', $param_value_str, 'text', $inputParamsAttrs );
- $text .= "\t<p>$inputParamsInput</p>\n";
-
- $text .= '<div class="editSchemaMinorFields">' . "\n";
- $inputBeforeTextPrint = Html::input( 'sf_input_befo_num', $inputBeforeText, 'text', array( 'size' => 80 ) );
- $text .= "\t<p>Text that will be printed before the field: $inputBeforeTextPrint</p>\n";
-
- $inputDescription = Html::input( 'sf_input_desc_num', $inputDesc, 'text', array( 'size' => 80 ) );
- $inputDescriptionTooltipMode = Html::input( 'sf_input_desctool_num', $inputDescTooltipMode, 'checkbox', array( 'checked' => ( $inputDescTooltipMode ) ? 'checked' : null ) );
- $text .= "\t<p>Field description: $inputDescription<br>$inputDescriptionTooltipMode Show description as pop-up tooltip</p>\n";
-
- // @HACK to make input parsing easier.
- $text .= Html::hidden( 'sf_input_finish_num', 1 );
-
- $text .= "</div>\n";
-
- return array( $text, $hasExistingValues );
- }
-
- public static function getPageSectionEditingHTML( $psPageSection ) {
- $otherParams = array();
-
- if ( !is_null( $psPageSection ) ) {
- $otherParams = $psPageSection->getObject( 'semanticforms_PageSection' );
- }
- $paramValues = array();
- if ( !is_null( $otherParams ) ) {
- foreach ( $otherParams as $param => $value ) {
- if ( !empty( $param ) ) {
- if ( !empty( $value ) ) {
- $paramValues[] = $param . '=' . $value;
- } else {
- $paramValues[] = $param;
- }
- }
- }
- }
-
- foreach ( $paramValues as $i => $paramAndVal ) {
- $paramValues[$i] = str_replace( ',', '\,', $paramAndVal );
- }
- $param_value_str = implode( ', ', $paramValues );
- $text = "\t" . '<p>' . wfMessage( 'sf-pageschemas-otherparams', 'rows=10, mandatory' )->escaped() . '</p>' . "\n";
- $inputParamsInput = Html::input( 'sf_pagesection_key_values_num', $param_value_str, 'text', array( 'size' => 80 ) );
- $text .= "\t<p>$inputParamsInput</p>\n";
-
- return $text;
- }
-
- public static function getFormName( $pageSchemaObj ) {
- $mainFormInfo = self::getMainFormInfo( $pageSchemaObj );
- if ( is_null( $mainFormInfo ) || !array_key_exists( 'name', $mainFormInfo ) ) {
- return null;
- }
- return $mainFormInfo['name'];
- }
-
- public static function getMainFormInfo( $pageSchemaObj ) {
- // return $pageSchemaObj->getObject( 'semanticforms_Form' );
- // We don't just call getObject() here, because sometimes, for
- // some reason, this gets called before SF registers itself
- // with Page Schemas, which means that getObject() would return
- // null. Instead, we directly call the code that would have
- // been called.
- $xml = $pageSchemaObj->getXML();
- foreach ( $xml->children() as $tag => $child ) {
- if ( $tag == "semanticforms_Form" ) {
- $sfarray = array();
- $formName = (string)$child->attributes()->name;
- $sfarray['name'] = $formName;
- foreach ( $child->children() as $tag => $formelem ) {
- if ( $tag == "standardInputs" ) {
- foreach ( $formelem->attributes() as $attr => $value ) {
- $sfarray[$attr] = (string)$formelem->attributes()->$attr;
- }
- } else {
- $sfarray[$tag] = (string)$formelem;
- }
- }
- return $sfarray;
- }
- }
- return array();
- }
-
- public static function getFormFieldInfo( $psTemplate, $template_fields ) {
- $form_fields = array();
- $fieldsInfo = $psTemplate->getFields();
- foreach ( $fieldsInfo as $i => $psField ) {
- $fieldFormArray = $psField->getObject( 'semanticforms_FormInput' );
- if ( !is_null( $fieldFormArray ) ) {
- $formField = SFFormField::create( $i, $template_fields[$i] );
- foreach ( $fieldFormArray as $var => $val ) {
- if ( $var == 'InputType' ) {
- $formField->setInputType( $val );
- } elseif ( $var == 'mandatory' ) {
- $formField->setIsMandatory( true );
- } elseif ( $var == 'hidden' ) {
- $formField->setIsHidden( true );
- } elseif ( $var == 'restricted' ) {
- $formField->setIsRestricted( true );
- } elseif ( in_array( $var, array( 'Description', 'DescriptionTooltipMode', 'TextBeforeField' ) ) ) {
- $formField->setDescriptionArg( $var, $val );
- } else {
- $formField->setFieldArg( $var, $val );
- }
- }
- $form_fields[] = $formField;
- }
- }
- return $form_fields;
- }
-
- public static function getPageSection( $psPageSection ) {
- $pageSection = SFPageSection::create( $psPageSection->getSectionName() );
- $pageSectionArray = $psPageSection->getObject( 'semanticforms_PageSection' );
- if ( !is_null( $pageSectionArray ) ) {
- foreach ( $pageSectionArray as $var => $val ) {
- if ( $var == 'mandatory' ) {
- $pageSection->setIsMandatory( true );
- } elseif ( $var == 'hidden' ) {
- $pageSection->setIsHidden( true );
- } elseif ( $var == 'restricted' ) {
- $pageSection->setIsRestricted( true );
- } else {
- $pageSection->setSectionArgs( $var, $val );
- }
- }
- }
- return $pageSection;
- }
-
- /**
- * Return the list of pages that Semantic Forms could generate from
- * the current Page Schemas schema.
- */
- public static function getPagesToGenerate( $pageSchemaObj ) {
- $psTemplates = $pageSchemaObj->getTemplates();
- foreach ( $psTemplates as $psTemplate ) {
- $title = Title::makeTitleSafe( NS_TEMPLATE, $psTemplate->getName() );
- $genPageList[] = $title;
- }
- $form_name = self::getFormName( $pageSchemaObj );
- if ( $form_name == null ) {
- return array();
- }
- $title = Title::makeTitleSafe( SF_NS_FORM, $form_name );
- $genPageList[] = $title;
- return $genPageList;
- }
-
- /**
- * Returns an array of SFTemplateField objects, representing the fields
- * of a template, based on the contents of a <PageSchema> tag.
- */
- public static function getFieldsFromTemplateSchema( $psTemplate ) {
- $psFields = $psTemplate->getFields();
- $templateFields = array();
- foreach ( $psFields as $psField ) {
- $prop_array = $psField->getObject( 'semanticmediawiki_Property' );
- $propertyName = PageSchemas::getValueFromObject( $prop_array, 'name' );
- if ( !is_null( $prop_array ) && empty( $propertyName ) ) {
- $propertyName = $psField->getName();
- }
- if ( $psField->getLabel() === '' ) {
- $fieldLabel = $psField->getName();
- } else {
- $fieldLabel = $psField->getLabel();
- }
- $templateField = SFTemplateField::create(
- $psField->getName(),
- $fieldLabel,
- $propertyName,
- $psField->isList(),
- $psField->getDelimiter(),
- $psField->getDisplay()
- );
- $templateField->setNamespace( $psField->getNamespace() );
- $templateFields[] = $templateField;
- }
- return $templateFields;
- }
-
- /**
- * Creates a form page, when called from the 'generatepages' page
- * of Page Schemas.
- */
- public static function generateForm( $formName, $formTitle,
- $formItems, $formDataFromSchema, $categoryName ) {
- global $wgUser;
-
- $input = array();
- if ( array_key_exists( 'inputFreeText', $formDataFromSchema ) ) {
- $input['free text'] = '{{{standard input|free text|rows=10}}}';
- }
- if ( array_key_exists( 'inputSummary', $formDataFromSchema ) ) {
- $input['summary'] = '{{{standard input|summary}}}';
- }
- if ( array_key_exists( 'inputMinorEdit', $formDataFromSchema ) ) {
- $input['minor edit'] = '{{{standard input|minor edit}}}';
- }
- if ( array_key_exists( 'inputWatch', $formDataFromSchema ) ) {
- $input['watch'] = '{{{standard input|watch}}}';
- }
- if ( array_key_exists( 'inputSave', $formDataFromSchema ) ) {
- $input['save'] = '{{{standard input|save}}}';
- }
- if ( array_key_exists( 'inputPreview', $formDataFromSchema ) ) {
- $input['preview'] = '{{{standard input|preview}}}';
- }
- if ( array_key_exists( 'inputChanges', $formDataFromSchema ) ) {
- $input['changes'] = '{{{standard input|changes}}}';
- }
- if ( array_key_exists( 'inputCancel', $formDataFromSchema ) ) {
- $input['cancel'] = '{{{standard input|cancel}}}';
- }
-
- $freeTextLabel = null;
- if ( array_key_exists( 'freeTextLabel', $formDataFromSchema ) )
- $freeTextLabel = $formDataFromSchema['freeTextLabel'];
-
- $form = SFForm::create( $formName, $formItems );
- $form->setAssociatedCategory( $categoryName );
- if ( array_key_exists( 'PageNameFormula', $formDataFromSchema ) ) {
- $form->setPageNameFormula( $formDataFromSchema['PageNameFormula'] );
- }
- if ( array_key_exists( 'CreateTitle', $formDataFromSchema ) ) {
- $form->setCreateTitle( $formDataFromSchema['CreateTitle'] );
- }
- if ( array_key_exists( 'EditTitle', $formDataFromSchema ) ) {
- $form->setEditTitle( $formDataFromSchema['EditTitle'] );
- }
- $formContents = $form->createMarkup( $input, $freeTextLabel );
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = $formContents;
- $job = new PSCreatePageJob( $formTitle, $params );
- Job::batchInsert( array( $job ) );
- }
-
- /**
- * Generate pages (form and templates) specified in the list.
- */
- public static function generatePages( $pageSchemaObj, $selectedPages ) {
- global $wgUser;
-
- $psFormItems = $pageSchemaObj->getFormItemsList();
- $form_items = array();
- $jobs = array();
- $templateHackUsed = false;
- $isCategoryNameSet = false;
-
- // Generate every specified template
- foreach ( $psFormItems as $psFormItem ) {
- if ( $psFormItem['type'] == 'Template' ) {
- $psTemplate = $psFormItem['item'];
- $templateName = $psTemplate->getName();
- $templateTitle = Title::makeTitleSafe( NS_TEMPLATE, $templateName );
- $fullTemplateName = PageSchemas::titleString( $templateTitle );
- $template_fields = self::getFieldsFromTemplateSchema( $psTemplate );
- // Get property for use in either #set_internal
- // or #subobject, defined by either SIO's or
- // SMW's Page Schemas portion. We don't need
- // to record which one it came from, because
- // SF's code to generate the template runs its
- // own, similar check.
- // @TODO - $internalObjProperty should probably
- // have a more generic name.
- if ( class_exists( 'SIOPageSchemas' ) ) {
- $internalObjProperty = SIOPageSchemas::getInternalObjectPropertyName( $psTemplate );
- } elseif ( method_exists( 'SMWPageSchemas', 'getConnectingPropertyName' ) ) {
- $internalObjProperty = SMWPageSchemas::getConnectingPropertyName( $psTemplate );
- } else {
- $internalObjProperty = null;
- }
- // TODO - actually, the category-setting should be
- // smarter than this: if there's more than one
- // template in the schema, it should probably be only
- // the first non-multiple template that includes the
- // category tag.
- if ( $psTemplate->isMultiple() ) {
- $categoryName = null;
- } else {
- if ( $isCategoryNameSet == false ) {
- $categoryName = $pageSchemaObj->getCategoryName();
- $isCategoryNameSet = true;
- } else {
- $categoryName = null;
- }
-
- }
- if ( method_exists( $psTemplate, 'getFormat' ) ) {
- $templateFormat = $psTemplate->getFormat();
- } else {
- $templateFormat = null;
- }
-
- $sfTemplate = new SFTemplate( $templateName, $template_fields );
- $sfTemplate->setConnectingProperty( $internalObjProperty );
- $sfTemplate->setCategoryName( $categoryName );
- $sfTemplate->setFormat( $templateFormat );
- $templateText = $sfTemplate->createText();
-
- if ( in_array( $fullTemplateName, $selectedPages ) ) {
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = $templateText;
- $jobs[] = new PSCreatePageJob( $templateTitle, $params );
- if ( strpos( $templateText, '{{!}}' ) > 0 ) {
- $templateHackUsed = true;
- }
- }
-
- $templateValues = self::getTemplateValues( $psTemplate );
- if ( array_key_exists( 'Label', $templateValues ) ) {
- $templateLabel = $templateValues['Label'];
- } else {
- $templateLabel = null;
- }
- $form_fields = self::getFormFieldInfo( $psTemplate, $template_fields );
- // Create template info for form, for use in generating
- // the form (if it will be generated).
- $form_template = SFTemplateInForm::create(
- $templateName,
- $templateLabel,
- $psTemplate->isMultiple(),
- null,
- $form_fields
- );
- $form_items[] = array( 'type' => 'template', 'name' => $form_template->getTemplateName(), 'item' => $form_template );
- } elseif ( $psFormItem['type'] == 'Section' ) {
- $psPageSection = $psFormItem['item'];
- $form_section = self::getPageSection( $psPageSection );
- $form_section->setSectionLevel( $psPageSection->getSectionLevel() );
- $form_items[] = array( 'type' => 'section', 'name'=> $form_section->getSectionName(), 'item' => $form_section );
- }
-
- }
-
- // Create the "!" hack template, if it's necessary
- if ( $templateHackUsed ) {
- $templateTitle = Title::makeTitleSafe( NS_TEMPLATE, '!' );
- if ( ! $templateTitle->exists() ) {
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = '|';
- $jobs[] = new PSCreatePageJob( $templateTitle, $params );
- }
- }
-
- Job::batchInsert( $jobs );
-
- // Create form, if it's specified.
- $formName = self::getFormName( $pageSchemaObj );
- $categoryName = $pageSchemaObj->getCategoryName();
- if ( !empty( $formName ) ) {
- $formInfo = self::getMainFormInfo( $pageSchemaObj );
- $formTitle = Title::makeTitleSafe( SF_NS_FORM, $formName );
- $fullFormName = PageSchemas::titleString( $formTitle );
- if ( in_array( $fullFormName, $selectedPages ) ) {
- self::generateForm( $formName, $formTitle,
- $form_items, $formInfo, $categoryName );
- }
- }
- }
-
- public static function getSchemaDisplayValues( $schemaXML ) {
- foreach ( $schemaXML->children() as $tag => $child ) {
- if ( $tag == "semanticforms_Form" ) {
- $formName = $child->attributes()->name;
- $values = array();
- foreach ( $child->children() as $tagName => $prop ) {
- $values[$tagName] = (string)$prop;
- }
- return array( $formName, $values );
- }
- }
- return null;
- }
-
- public static function getTemplateValues( $psTemplate ) {
- // TODO - fix this.
- $values = array();
- if ( $psTemplate instanceof PSTemplate ) {
- $psTemplate = $psTemplate->getXML();
- }
- foreach ( $psTemplate->children() as $tag => $child ) {
- if ( $tag == "semanticforms_TemplateDetails" ) {
- foreach ( $child->children() as $prop ) {
- $values[$prop->getName()] = (string)$prop;
- }
- }
- }
- return $values;
- }
-
- public static function getTemplateDisplayString() {
- return 'Details for template in form';
- }
-
- /**
- * Displays form details for one template in the Page Schemas XML.
- */
- public static function getTemplateDisplayValues( $templateXML ) {
- $templateValues = self::getTemplateValues( $templateXML );
- if ( count( $templateValues ) == 0 ) {
- return null;
- }
-
- $displayValues = array();
- foreach ( $templateValues as $key => $value ) {
- if ( $key == 'Label' ) {
- $propName = 'Label';
- } elseif ( $key == 'AddAnotherText' ) {
- $propName = "'Add another' button";
- }
- $displayValues[$propName] = $value;
- }
- return array( null, $displayValues );
- }
-
- public static function getFieldDisplayString() {
- return 'Form input';
- }
-
- public static function getPageSectionDisplayString() {
- return wfMessage( 'ps-otherparams' )->text();
- }
-
- /**
- * Displays data on a single form input in the Page Schemas XML.
- */
- public static function getFieldDisplayValues( $fieldXML ) {
- foreach ( $fieldXML->children() as $tag => $child ) {
- if ( $tag == "semanticforms_FormInput" ) {
- $inputName = $child->attributes()->name;
- $values = array();
- foreach ( $child->children() as $prop ) {
- if ( $prop->getName() == 'InputType' ) {
- $propName = 'Input type';
- } else {
- $propName = (string)$prop->attributes()->name;
- }
- $values[$propName] = (string)$prop;
- }
- return array( $inputName, $values );
- }
- }
- return null;
- }
-
- public static function getPageSectionDisplayValues( $pageSectionXML ) {
- foreach ( $pageSectionXML->children() as $tag => $child ) {
- if ( $tag == "semanticforms_PageSection" ) {
- $inputName = $child->attributes()->name;
- $values = array();
- foreach ( $child->children() as $prop ) {
- $propName = (string)$prop->attributes()->name;
- $values[$propName] = (string)$prop;
- }
- return array( $inputName, $values );
- }
- }
- return null;
- }
-}
diff --git a/SemanticForms/includes/SF_PageSection.php b/SemanticForms/includes/SF_PageSection.php
deleted file mode 100644
index 0e02e72d..00000000
--- a/SemanticForms/includes/SF_PageSection.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * Represents a page section in a user-defined form.
- * @author Himeshi
- * @file
- * @ingroup SF
- */
-class SFPageSection {
- private $mSectionName;
- private $mSectionLevel;
- private $mIsMandatory;
- private $mIsHidden;
- private $mIsRestricted;
- private $mSectionArgs;
-
- static function create( $section_name ) {
- $ps = new SFPageSection();
- $ps->mSectionName = $section_name;
- $ps->mSectionLevel = 2;
- $ps->mIsMandatory = false;
- $ps->mIsHidden = false;
- $ps->mIsRestricted = false;
- $ps->mSectionArgs = array();
-
- return $ps;
- }
-
- public function getSectionName() {
- return $this->mSectionName;
- }
-
- public function getSectionLevel() {
- return $this->mSectionLevel;
- }
-
- public function setSectionLevel( $section_level ) {
- $this->mSectionLevel = $section_level;
- }
-
- public function setIsMandatory( $isMandatory ) {
- $this->mIsMandatory = $isMandatory;
- }
-
- public function setIsHidden( $isHidden ) {
- $this->mIsHidden = $isHidden;
- }
-
- public function setIsRestricted( $isRestricted ) {
- $this->mIsRestricted = $isRestricted;
- }
-
- public function setSectionArgs( $key, $value ) {
- $this->mSectionArgs[$key] = $value;
- }
-
- function creationHTML( $section_count ) {
- global $wgRequest;
- $paramValues = array();
- $section_name = $this->mSectionName;
- $section_level = $this->mSectionLevel;
-
- $section_str = wfMessage( 'sf_createform_pagesection' )->text() . " '" . $section_name . "'";
- $text = <<<END
- <input type="hidden" name="section_$section_count" value="$section_name">
- <div class="sectionForm">
- <h2>$section_str</h2>
-
-END;
- foreach ( $wgRequest->getValues() as $key => $value ) {
- if ( ( $pos = strpos( $key, '_section_'.$section_count ) ) != false ) {
- $paramName = substr( $key, 0, $pos );
- $paramName = str_replace( '_', ' ', $paramName );
- $paramValues[$paramName] = $value;
- }
- }
-
- $header_options = '';
- $text .= Html::rawElement( 'span', null, wfMessage( 'sf_createform_sectionlevel' )->text() ) . "\n";
- for ( $i = 1; $i < 7; $i++ ) {
- if ( $section_level == $i ) {
- $header_options .= " " . Html::element( 'option', array( 'value' => $i, 'selected' ), $i ) . "\n";
- } else {
- $header_options .= " " . Html::element( 'option', array( 'value' => $i ), $i ) . "\n";
- }
- }
- $text .= Html::rawElement( 'select', array( 'name' => "level_section_" . $section_count ), $header_options ) . "\n";
- $other_param_text = wfMessage( 'sf_createform_otherparameters' )->escaped();
- $text .= "<fieldset class=\"sfCollapsibleFieldset\"><legend>$other_param_text</legend>\n";
- $text .= Html::rawElement( 'div', array(),
- SFCreateForm::showSectionParameters( $section_count, $paramValues ) ) . "\n";
- $text .= "</fieldset>\n";
- $removeSectionButton = Html::input( 'delsection_' . $section_count, wfMessage( 'sf_createform_removesection' )->text(), 'submit' ) . "\n";
- $text .= "</br>" . Html::rawElement( 'p', null, $removeSectionButton ) . "\n";
- $text .= " </div>\n";
-
- return $text;
- }
-
- function createMarkup() {
- $section_name = $this->mSectionName;
- $section_level = $this->mSectionLevel;
- // Set default section level to 2
- if ( $section_level == '' ){
- $section_level = 2;
- }
- //display the section headers in wikitext
- $header_string = "";
- $header_string .= str_repeat( "=", $section_level );
- $text = $header_string . $section_name . $header_string . "\n";
-
- $text .= "{{{section|" . $section_name . "|level=" . $section_level;
-
- if ( $this->mIsMandatory ) {
- $text .= "|mandatory";
- } elseif ( $this->mIsRestricted ) {
- $text .= "|restricted";
- } elseif ( $this->mIsHidden ) {
- $text .= "|hidden";
- }
- foreach ( $this->mSectionArgs as $arg => $value ) {
- if ( $value === true ) {
- $text .= "|$arg";
- } else {
- $text .= "|$arg=$value";
- }
- }
- $text .= "}}}\n";
-
- return $text;
- }
-
- 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['hidden'] = array(
- 'name' => 'hidden',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_createform_hiddensection' )->text()
- );
- $params['class'] = array(
- 'name' => 'class',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_class' )->text()
- );
- $params['rows'] = array(
- 'name' => 'rows',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_rows' )->text()
- );
- $params['cols'] = array(
- 'name' => 'cols',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_cols' )->text()
- );
- $params['autogrow'] = array(
- 'name' => 'autogrow',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_autogrow' )->text()
- );
-
- return $params;
- }
-
- function getParamValues() {
- $paramValues = array();
- $paramValues['restricted'] = $this->mIsRestricted;
- $paramValues['hidden'] = $this->mIsHidden;
- $paramValues['mandatory'] = $this->mIsMandatory;
- return $paramValues;
- }
-}
diff --git a/SemanticForms/includes/SF_ParserFunctions.php b/SemanticForms/includes/SF_ParserFunctions.php
deleted file mode 100644
index 5f240fc7..00000000
--- a/SemanticForms/includes/SF_ParserFunctions.php
+++ /dev/null
@@ -1,667 +0,0 @@
-<?php
-/**
- * Parser functions for Semantic Forms.
- *
- * @file
- * @ingroup SF
- * The following parser functions are defined: 'forminput', 'formlink',
- * 'queryformlink', 'arraymap', 'arraymaptemplate' and 'autoedit'.
- *
- * 'forminput' is called as:
- *
- * {{#forminput:form=|size=|default value=|button text=|query string=
- * |autocomplete on category=|autocomplete on namespace=
- * |remote autocompletion|...additional query string values...}}
- *
- * This function returns HTML representing a form to let the user enter the
- * name of a page to be added or edited using a Semantic Forms form. All
- * arguments are optional. 'form' is the name of the SF form to be used;
- * if it is left empty, a dropdown will appear, letting the user chose among
- * all existing forms. 'size' represents the size of the text input (default
- * is 25), and 'default value' is the starting value of the input.
- * 'button text' is the text that will appear on the "submit" button, and
- * 'query string' is the set of values that you want passed in through the
- * query string to the form. (Query string values can also be passed in
- * directly as parameters.) Finally, you can can specify that the user will
- * get autocompletion using the values from a category or namespace of your
- * choice, using 'autocomplete on category' or 'autocomplete on namespace'
- * (you can only use one). To autcomplete on all pages in the main (blank)
- * namespace, specify "autocomplete on namespace=main".
- *
- * If the "remote autocompletion" parameter is added, autocompletion
- * is done via an external URL, which can allow autocompletion on a much
- * larger set of values.
- *
- * Example: to create an input to add or edit a page with a form called
- * 'User' within a namespace also called 'User', and to have the form
- * preload with the page called 'UserStub', you could call the following:
- *
- * {{#forminput:form=User|button text=Add or edit user
- * |query string=namespace=User&preload=UserStub}}
- *
- *
- * 'formlink' is called as:
- *
- * {{#formlink:form=|link text=|link type=|tooltip=|query string=|target=
- * |popup|...additional query string values...}}
- *
- * This function returns HTML representing a link to a form; given that
- * no page name is entered by the the user, the form must be one that
- * creates an automatic page name, or else it will display an error
- * message when the user clicks on the link.
- *
- * The first two arguments are mandatory:
- * 'form' is the name of the SF form, and 'link text' is the text of the link.
- * 'link type' is the type of the link: if set to 'button', the link will be
- * a button; if set to 'post button', the link will be a button that uses the
- * 'POST' method to send other values to the form; if set to anything else or
- * not called, it will be a standard hyperlink.
- * 'tooltip' sets a hovering tooltip text, if it's an actual link.
- * 'query string' is the text to be added to the generated URL's query string
- * (or, in the case of 'post button', to be sent as hidden inputs).
- * 'target' is an optional value, setting the name of the page to be
- * edited by the form.
- *
- * Example: to create a link to add data with a form called
- * 'User' within a namespace also called 'User', and to have the form
- * preload with the page called 'UserStub', you could call the following:
- *
- * {{#formlink:form=User|link text=Add a user
- * |query string=namespace=User&preload=UserStub}}
- *
- *
- * 'queryformlink' links to Special:RunQuery, instead of Special:FormEdit.
- * It is called in the exact same way as 'formlink', though the
- * 'target' parameter should not be specified, and 'link text' is now optional,
- * since it has a default value of 'Run query' (in whatever language the
- * wiki is in).
- *
- *
- * 'arraymap' is called as:
- *
- * {{#arraymap:value|delimiter|var|formula|new_delimiter}}
- *
- * This function applies the same transformation to every section of a
- * delimited string; each such section, as dictated by the 'delimiter'
- * value, is given the same transformation that the 'var' string is
- * given in 'formula'. Finally, the transformed strings are joined
- * together using the 'new_delimiter' string. Both 'delimiter' and
- * 'new_delimiter' default to commas.
- *
- * Example: to take a semicolon-delimited list, and place the attribute
- * 'Has color' around each element in the list, you could call the
- * following:
- *
- * {{#arraymap:blue;red;yellow|;|x|[[Has color::x]]|;}}
- *
- *
- * 'arraymaptemplate' is called as:
- *
- * {{#arraymaptemplate:value|template|delimiter|new_delimiter}}
- *
- * This function makes the same template call for every section of a
- * delimited string; each such section, as dictated by the 'delimiter'
- * value, is passed as a first parameter to the template specified.
- * Finally, the transformed strings are joined together using the
- * 'new_delimiter' string. Both 'delimiter' and 'new_delimiter'
- * default to commas.
- *
- * Example: to take a semicolon-delimited list, and call a template
- * named 'Beautify' on each element in the list, you could call the
- * following:
- *
- * {{#arraymaptemplate:blue;red;yellow|Beautify|;|;}}
- *
- *
- * 'autoedit' is called as:
- *
- * {{#autoedit:form=|target=|link text=|link type=|query string=|reload}}
- *
- * This function creates a link or button that, when clicked on,
- * automatically modifies the specified page according to the values in the
- * 'query string' variable.
- *
- * The parameters of #autoedit are called in the same format as those
- * of #formlink. The one addition, 'reload', will, if added, cause the page
- * to reload after the user clicks the button or link.
- *
- * @author Yaron Koren
- * @author Sergey Chernyshev
- * @author Daniel Friesen
- * @author Barry Welch
- * @author Christoph Burgmer
- * @author Stephan Gambke
- * @author MWJames
- */
-
-class SFParserFunctions {
-
- // static variable to guarantee that Javascript for autocompletion
- // only gets added to the page once
- static $num_autocompletion_inputs = 0;
-
- static function registerFunctions( &$parser ) {
- global $wgOut;
-
- $parser->setFunctionHook( 'forminput', array( 'SFParserFunctions', 'renderFormInput' ) );
- $parser->setFunctionHook( 'formlink', array( 'SFParserFunctions', 'renderFormLink' ) );
- $parser->setFunctionHook( 'queryformlink', array( 'SFParserFunctions', 'renderQueryFormLink' ) );
- if ( defined( get_class( $parser ) . '::SFH_OBJECT_ARGS' ) ) {
- $parser->setFunctionHook( 'arraymap', array( 'SFParserFunctions', 'renderArrayMapObj' ), SFH_OBJECT_ARGS );
- $parser->setFunctionHook( 'arraymaptemplate', array( 'SFParserFunctions', 'renderArrayMapTemplateObj' ), SFH_OBJECT_ARGS );
- } else {
- $parser->setFunctionHook( 'arraymap', array( 'SFParserFunctions', 'renderArrayMap' ) );
- $parser->setFunctionHook( 'arraymaptemplate', array( 'SFParserFunctions', 'renderArrayMapTemplate' ) );
- }
-
- $parser->setFunctionHook( 'autoedit', array( 'SFParserFunctions', 'renderAutoEdit' ) );
-
- return true;
- }
-
- static function renderFormLink ( &$parser ) {
- $params = func_get_args();
- array_shift( $params ); // We don't need the parser.
-
- // hack to remove newline from beginning of output, thanks to
- // http://jimbojw.com/wiki/index.php?title=Raw_HTML_Output_from_a_MediaWiki_Parser_Function
- return $parser->insertStripItem( SFUtils::createFormLink( $parser, 'FormEdit', $params ), $parser->mStripState );
- }
-
- static function renderQueryFormLink ( &$parser ) {
- $params = func_get_args();
- array_shift( $params ); // We don't need the parser.
-
- // hack to remove newline from beginning of output, thanks to
- // http://jimbojw.com/wiki/index.php?title=Raw_HTML_Output_from_a_MediaWiki_Parser_Function
- return $parser->insertStripItem( SFUtils::createFormLink( $parser, 'RunQuery', $params ), $parser->mStripState );
- }
-
- static function renderFormInput ( &$parser ) {
-
- global $wgHtml5;
-
- $params = func_get_args();
- array_shift( $params ); // don't need the parser
- // set defaults
- $inFormName = $inValue = $inButtonStr = $inQueryStr = '';
- $inQueryArr = array();
- $positionalParameters = false;
- $inAutocompletionSource = '';
- $inRemoteAutocompletion = false;
- $inSize = 25;
- $classStr = "";
- $inPlaceholder = "";
- // assign params - support unlabelled params, for backwards compatibility
- foreach ( $params as $i => $param ) {
- $elements = explode( '=', $param, 2 );
-
- // set param_name and value
- if ( count( $elements ) > 1 && !$positionalParameters ) {
- $param_name = trim( $elements[0] );
-
- // parse (and sanitize) parameter values
- $value = trim( $parser->recursiveTagParse( $elements[1] ) );
- } else {
- $param_name = null;
-
- // parse (and sanitize) parameter values
- $value = trim( $parser->recursiveTagParse( $param ) );
- }
-
- if ( $param_name == 'form' )
- $inFormName = $value;
- elseif ( $param_name == 'size' )
- $inSize = $value;
- elseif ( $param_name == 'default value' )
- $inValue = $value;
- elseif ( $param_name == 'button text' )
- $inButtonStr = $value;
- elseif ( $param_name == 'query string' ) {
- // Change HTML-encoded ampersands directly to
- // URL-encoded ampersands, so that the string
- // doesn't get split up on the '&'.
- $inQueryStr = str_replace( '&amp;', '%26', $value );
- // "Decode" any other HTML tags.
- $inQueryStr = html_entity_decode( $inQueryStr, ENT_QUOTES );
-
- parse_str($inQueryStr, $arr);
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
- } elseif ( $param_name == 'autocomplete on category' ) {
- $inAutocompletionSource = $value;
- $autocompletion_type = 'category';
- } elseif ( $param_name == 'autocomplete on namespace' ) {
- $inAutocompletionSource = $value;
- $autocompletion_type = 'namespace';
- } elseif ( $param_name == 'remote autocompletion' ) {
- $inRemoteAutocompletion = true;
- } elseif ( $param_name == 'placeholder' ) {
- $inPlaceholder = $value;
- } elseif ( $param_name == null && $value == 'popup' ) {
- SFUtils::loadScriptsForPopupForm( $parser );
- $classStr = 'popupforminput';
- } elseif ( $param_name !== null && !$positionalParameters ) {
-
- $value = urlencode($value);
- parse_str("$param_name=$value", $arr);
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
-
- } elseif ( $i == 0 ) {
- $inFormName = $value;
- $positionalParameters = true;
- } elseif ( $i == 1 ) {
- $inSize = $value;
- } elseif ( $i == 2 ) {
- $inValue = $value;
- } elseif ( $i == 3 ) {
- $inButtonStr = $value;
- } elseif ( $i == 4 ) {
- // Change HTML-encoded ampersands directly to
- // URL-encoded ampersands, so that the string
- // doesn't get split up on the '&'.
- $inQueryStr = str_replace( '&amp;', '%26', $value );
-
- parse_str($inQueryStr, $arr);
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
- }
- }
-
- $fs = SpecialPageFactory::getPage( 'FormStart' );
-
- $fs_url = $fs->getTitle()->getLocalURL();
- $str = <<<END
- <form name="createbox" action="$fs_url" method="get" class="$classStr">
- <p>
-
-END;
- $formInputAttrs = array( 'size' => $inSize );
-
- if ( $wgHtml5 ) {
- $formInputAttrs['placeholder'] = $inPlaceholder;
- $formInputAttrs['autofocus'] = 'autofocus';
- }
-
- // Now apply the necessary settings and Javascript, depending
- // on whether or not there's autocompletion (and whether the
- // autocompletion is local or remote).
- $input_num = 1;
- if ( empty( $inAutocompletionSource ) ) {
- $formInputAttrs['class'] = 'formInput';
- } else {
- self::$num_autocompletion_inputs++;
- $input_num = self::$num_autocompletion_inputs;
- // place the necessary Javascript on the page, and
- // disable the cache (so the Javascript will show up) -
- // if there's more than one autocompleted #forminput
- // on the page, we only need to do this the first time
- if ( $input_num == 1 ) {
- $parser->disableCache();
- SFUtils::addJavascriptAndCSS( $parser );
- }
-
- $inputID = 'input_' . $input_num;
- $formInputAttrs['id'] = $inputID;
- $formInputAttrs['class'] = 'autocompleteInput createboxInput formInput';
- global $sfgMaxLocalAutocompleteValues;
- $autocompletion_values = SFUtils::getAutocompleteValues( $inAutocompletionSource, $autocompletion_type );
- if ( count($autocompletion_values) > $sfgMaxLocalAutocompleteValues || $inRemoteAutocompletion ) {
- $formInputAttrs['autocompletesettings'] = $inAutocompletionSource;
- $formInputAttrs['autocompletedatatype'] = $autocompletion_type;
- } else {
- global $sfgAutocompleteValues;
- $sfgAutocompleteValues[$inputID] = $autocompletion_values;
- $formInputAttrs['autocompletesettings'] = $inputID;
- }
- }
-
- $str .= "\t" . Html::input( 'page_name', $inValue, 'text', $formInputAttrs ) . "\n";
-
- // if the form start URL looks like "index.php?title=Special:FormStart"
- // (i.e., it's in the default URL style), add in the title as a
- // hidden value
- if ( ( $pos = strpos( $fs_url, "title=" ) ) > - 1 ) {
- $str .= Html::hidden( "title", urldecode( substr( $fs_url, $pos + 6 ) ) );
- }
- if ( $inFormName == '' ) {
- $str .= SFUtils::formDropdownHTML();
- } else {
- $str .= Html::hidden( "form", $inFormName );
- }
-
- // Recreate the passed-in query string as a set of hidden variables.
- if ( !empty( $inQueryArr ) ) {
- // query string has to be turned into hidden inputs.
-
- $query_components = explode( '&', http_build_query( $inQueryArr, '', '&' ) );
-
- foreach ( $query_components as $query_component ) {
- $var_and_val = explode( '=', $query_component, 2 );
- if ( count( $var_and_val ) == 2 ) {
- $str .= Html::hidden( urldecode( $var_and_val[0] ), urldecode( $var_and_val[1] ) );
- }
- }
- }
-
- $button_str = ( $inButtonStr != '' ) ? $inButtonStr : wfMessage( 'sf_formstart_createoredit' )->escaped();
- $str .= <<<END
- <input type="submit" value="$button_str" id="input_button_$input_num" class="forminput_button"/></p>
- </form>
-
-END;
- if ( ! empty( $inAutocompletionSource ) ) {
- $str .= "\t\t\t" .
- Html::element( 'div',
- array(
- 'class' => 'page_name_auto_complete',
- 'id' => "div_$input_num",
- ),
- // it has to be <div></div>, not
- // <div />, to work properly - stick
- // in a space as the content
- ' '
- ) . "\n";
- }
-
- // hack to remove newline from beginning of output, thanks to
- // http://jimbojw.com/wiki/index.php?title=Raw_HTML_Output_from_a_MediaWiki_Parser_Function
- return $parser->insertStripItem( $str, $parser->mStripState );
- }
-
- /**
- * {{#arraymap:value|delimiter|var|formula|new_delimiter}}
- */
- static function renderArrayMap( &$parser, $value = '', $delimiter = ',', $var = 'x', $formula = 'x', $new_delimiter = ', ' ) {
- // let '\n' represent newlines - chances that anyone will
- // actually need the '\n' literal are small
- $delimiter = str_replace( '\n', "\n", $delimiter );
- $actual_delimiter = $parser->mStripState->unstripNoWiki( $delimiter );
- $new_delimiter = str_replace( '\n', "\n", $new_delimiter );
-
- if ( $actual_delimiter == '' ) {
- $values_array = preg_split( '/(.)/u', $value, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
- } else {
- $values_array = explode( $actual_delimiter, $value );
- }
-
- $results = array();
- foreach ( $values_array as $cur_value ) {
- $cur_value = trim( $cur_value );
- // ignore a value if it's null
- if ( $cur_value != '' ) {
- // remove whitespaces
- $results[] = str_replace( $var, $cur_value, $formula );
- }
- }
- return implode( $new_delimiter, $results );
- }
-
- /**
- * SFH_OBJ_ARGS
- * {{#arraymap:value|delimiter|var|formula|new_delimiter}}
- */
- static function renderArrayMapObj( &$parser, $frame, $args ) {
- # Set variables
- $value = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
- $delimiter = isset( $args[1] ) ? trim( $frame->expand( $args[1] ) ) : ',';
- $var = isset( $args[2] ) ? trim( $frame->expand( $args[2], PPFrame::NO_ARGS | PPFrame::NO_TEMPLATES ) ) : 'x';
- $formula = isset( $args[3] ) ? $args[3] : 'x';
- $new_delimiter = isset( $args[4] ) ? trim( $frame->expand( $args[4] ) ) : ', ';
- # Unstrip some
- $delimiter = $parser->mStripState->unstripNoWiki( $delimiter );
- # let '\n' represent newlines
- $delimiter = str_replace( '\n', "\n", $delimiter );
- $new_delimiter = str_replace( '\n', "\n", $new_delimiter );
-
- if ( $delimiter == '' ) {
- $values_array = preg_split( '/(.)/u', $value, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
- } else {
- $values_array = explode( $delimiter, $value );
- }
-
- $results_array = array();
- // add results to the results array only if the old value was
- // non-null, and the new, mapped value is non-null as well.
- foreach ( $values_array as $old_value ) {
- $old_value = trim( $old_value );
- if ( $old_value == '' ) continue;
- $result_value = $frame->expand( $formula, PPFrame::NO_ARGS | PPFrame::NO_TEMPLATES );
- $result_value = str_replace( $var, $old_value, $result_value );
- $result_value = $parser->preprocessToDom( $result_value, $frame->isTemplate() ? Parser::PTD_FOR_INCLUSION : 0 );
- $result_value = trim( $frame->expand( $result_value ) );
- if ( $result_value == '' ) continue;
- $results_array[] = $result_value;
- }
- return implode( $new_delimiter, $results_array );
- }
-
- /**
- * {{#arraymaptemplate:value|template|delimiter|new_delimiter}}
- */
- static function renderArrayMapTemplate( &$parser, $value = '', $template = '', $delimiter = ',', $new_delimiter = ', ' ) {
- # let '\n' represent newlines
- $delimiter = str_replace( '\n', "\n", $delimiter );
- $actual_delimiter = $parser->mStripState->unstripNoWiki( $delimiter );
- $new_delimiter = str_replace( '\n', "\n", $new_delimiter );
-
- if ( $actual_delimiter == '' ) {
- $values_array = preg_split( '/(.)/u', $value, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
- } else {
- $values_array = explode( $actual_delimiter, $value );
- }
-
- $results = array();
- $template = trim( $template );
-
- foreach ( $values_array as $cur_value ) {
- $cur_value = trim( $cur_value );
- // ignore a value if it's null
- if ( $cur_value != '' ) {
- // remove whitespaces
- $results[] = '{{' . $template . '|' . $cur_value . '}}';
- }
- }
-
- return array( implode( $new_delimiter, $results ), 'noparse' => false, 'isHTML' => false );
- }
-
- /**
- * SFH_OBJ_ARGS
- * {{#arraymaptemplate:value|template|delimiter|new_delimiter}}
- */
- static function renderArrayMapTemplateObj( &$parser, $frame, $args ) {
- # Set variables
- $value = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
- $template = isset( $args[1] ) ? trim( $frame->expand( $args[1] ) ) : '';
- $delimiter = isset( $args[2] ) ? trim( $frame->expand( $args[2] ) ) : ',';
- $new_delimiter = isset( $args[3] ) ? trim( $frame->expand( $args[3] ) ) : ', ';
- # Unstrip some
- $delimiter = $parser->mStripState->unstripNoWiki( $delimiter );
- # let '\n' represent newlines
- $delimiter = str_replace( '\n', "\n", $delimiter );
- $new_delimiter = str_replace( '\n', "\n", $new_delimiter );
-
- if ( $delimiter == '' ) {
- $values_array = preg_split( '/(.)/u', $value, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
- } else {
- $values_array = explode( $delimiter, $value );
- }
-
- $results_array = array();
- foreach ( $values_array as $old_value ) {
- $old_value = trim( $old_value );
- if ( $old_value == '' ) continue;
- $bracketed_value = $frame->virtualBracketedImplode( '{{', '|', '}}',
- $template, '1=' . $old_value );
- // special handling if preprocessor class is set to
- // 'Preprocessor_Hash'
- if ( $bracketed_value instanceof PPNode_Hash_Array ) {
- $bracketed_value = $bracketed_value->value;
- }
- $results_array[] = $parser->replaceVariables(
- implode( '', $bracketed_value ), $frame );
- }
- return implode( $new_delimiter, $results_array );
- }
-
-
- static function renderAutoEdit( &$parser ) {
- // set defaults
- $formcontent = '';
- $linkString = null;
- $linkType = 'span';
- $summary = null;
- $classString = 'autoedit-trigger';
- $inQueryArr = array();
- $editTime = null;
-
- // parse parameters
- $params = func_get_args();
- array_shift( $params ); // don't need the parser
-
- foreach ( $params as $param ) {
-
- $elements = explode( '=', $param, 2 );
-
- $key = trim( $elements[ 0 ] );
- $value = ( count( $elements ) > 1 ) ? trim( $elements[ 1 ] ) : '';
-
- switch ( $key ) {
- case 'link text':
- $linkString = $parser->recursiveTagParse( $value );
- break;
- case 'link type':
- $linkType = $parser->recursiveTagParse( $value );
- break;
- case 'reload':
- $classString .= ' reload';
- break;
- case 'summary':
- $summary = $parser->recursiveTagParse( $value );
- break;
- case 'query string' :
-
- // Change HTML-encoded ampersands directly to
- // URL-encoded ampersands, so that the string
- // doesn't get split up on the '&'.
- $inQueryStr = str_replace( '&amp;', '%26', $value );
-
- parse_str( $inQueryStr, $arr );
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
- break;
-
- case 'ok text':
- case 'error text':
- // do not parse ok text or error text yet. Will be parsed on api call
- $arr = array( $key => $value );
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
- break;
-
- case 'target':
- case 'title':
- $value = $parser->recursiveTagParse( $value );
- $arr = array( $key => $value );
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
-
- $targetTitle = Title::newFromText( $value );
-
- if ( $targetTitle !== null ) {
- $targetArticle = new Article( $targetTitle );
- $targetArticle->clear();
- $editTime = $targetArticle->getTimestamp();
- }
-
- default :
-
- $value = $parser->recursiveTagParse( $value );
- $arr = array( $key => $value );
- $inQueryArr = SFUtils::array_merge_recursive_distinct( $inQueryArr, $arr );
- }
- }
-
- // query string has to be turned into hidden inputs.
- if ( !empty( $inQueryArr ) ) {
-
- $query_components = explode( '&', http_build_query( $inQueryArr, '', '&' ) );
-
- foreach ( $query_components as $query_component ) {
- $var_and_val = explode( '=', $query_component, 2 );
- if ( count( $var_and_val ) == 2 ) {
- $formcontent .= Html::hidden( urldecode( $var_and_val[0] ), urldecode( $var_and_val[1] ) );
- }
- }
- }
-
- if ( $linkString == null ) return null;
-
- if ( $linkType == 'button' ) {
- // Html::rawElement() before MW 1.21 or so drops the type attribute
- // do not use Html::rawElement() for buttons!
- $linkElement = '<button ' . Html::expandAttributes( array( 'type' => 'submit', 'class' => $classString ) ) . '>' . $linkString . '</button>';
- } elseif ( $linkType == 'link' ) {
- $linkElement = Html::rawElement( 'a', array( 'class' => $classString, 'href' => "#" ), $linkString );
- } else {
- $linkElement = Html::rawElement( 'span', array( 'class' => $classString ), $linkString );
- }
-
- if ( $summary == null ) {
- $summary = wfMessage( 'sf_autoedit_summary', "[[{$parser->getTitle()}]]" )->text();
- }
-
- $formcontent .= Html::hidden( 'wpSummary', $summary );
-
- if ( $editTime !== null ) {
- $formcontent .= Html::hidden( 'wpEdittime', $editTime );
- }
-
- $form = Html::rawElement( 'form', array( 'class' => 'autoedit-data' ), $formcontent );
-
- // ensure loading of jQuery and style sheets
- self::loadScriptsForAutoEdit( $parser );
-
- $output = Html::rawElement( 'div', array( 'class' => 'autoedit' ),
- $linkElement .
- Html::rawElement( 'span', array( 'class' => "autoedit-result" ), null ) .
- $form
- );
-
- // return output HTML
- return $parser->insertStripItem( $output, $parser->mStripState );
- }
-
- /**
- * Load scripts and style files for AutoEdit
- */
- private static function loadScriptsForAutoEdit ( &$parser ) {
- global $sfgScriptPath;
-
- if ( defined( 'MW_SUPPORTS_RESOURCE_MODULES' ) ) {
- $parser->getOutput()->addModules( 'ext.semanticforms.autoedit' );
- } else {
-
- static $loaded = false;
-
- // load JavaScript and CSS files only once
- if ( !$loaded ) {
-
- // load extensions JavaScript
- $parser->getOutput()->addHeadItem(
- '<script type="text/javascript" src="' . $sfgScriptPath
- . '/libs/SF_autoedit.js"></script> ' . "\n",
- 'sf_autoedit_script'
- );
-
- // load extensions style sheet
- $parser->getOutput()->addHeadItem(
- '<link rel="stylesheet" href="' . $sfgScriptPath
- . '/skins/SF_autoedit.css"/> ' . "\n",
- 'sf_autoedit_style'
- );
-
- $loaded = true;
- }
- }
-
- return true;
- }
-
-}
diff --git a/SemanticForms/includes/SF_Template.php b/SemanticForms/includes/SF_Template.php
deleted file mode 100644
index 10b5a96b..00000000
--- a/SemanticForms/includes/SF_Template.php
+++ /dev/null
@@ -1,337 +0,0 @@
-<?php
-/**
- * Defines a class, SFTemplate, that represents a MediaWiki "infobox"
- * template that holds structured data, which may or may not include
- * SMW properties.
- *
- * For now, this class is used only to generate the text of a template,
- * by various helper pages.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-class SFTemplate {
- private $mTemplateName;
- private $mTemplateFields;
- private $mConnectingProperty;
- private $mCategoryName;
- private $mAggregatingProperty;
- private $mAggregationLabel;
- private $mTemplateFormat;
- private $mFieldStart;
- private $mFieldEnd;
- private $mTemplateStart;
- private $mTemplateEnd;
-
- public function __construct( $templateName, $templateFields ) {
- $this->mTemplateName = $templateName;
- $this->mTemplateFields = $templateFields;
- }
-
- public function setConnectingProperty( $connectingProperty ) {
- $this->mConnectingProperty = $connectingProperty;
- }
-
- public function setCategoryName( $categoryName ) {
- $this->mCategoryName = $categoryName;
- }
-
- public function setAggregatingInfo( $aggregatingProperty, $aggregationLabel ) {
- $this->mAggregatingProperty = $aggregatingProperty;
- $this->mAggregationLabel = $aggregationLabel;
- }
-
- // Currently unused method.
- public function setFieldStartAndEnd( $fieldStart, $fieldEnd ) {
- $this->mFieldStart = $fieldStart;
- $this->mFieldEnd = $fieldEnd;
- }
-
- // Currently unused method.
- public function setTemplateStartAndEnd( $templateStart, $templateEnd ) {
- $this->mTemplateStart = $templateStart;
- $this->mTemplateEnd = $templateEnd;
- }
-
- public function setFormat( $templateFormat ) {
- $this->mTemplateFormat = $templateFormat;
- }
-
- /**
- * Creates the text of a template, when called from
- * Special:CreateTemplate, Special:CreateClass or the Page Schemas
- * extension.
- */
- public function createText() {
- wfRunHooks( 'SFCreateTemplateText', array( &$this ) );
- $templateHeader = wfMessage( 'sf_template_docu', $this->mTemplateName )->inContentLanguage()->text();
- $text = <<<END
-<noinclude>
-$templateHeader
-<pre>
-
-END;
- $text .= '{{' . $this->mTemplateName;
- if ( count( $this->mTemplateFields ) > 0 ) { $text .= "\n"; }
- foreach ( $this->mTemplateFields as $field ) {
- if ( $field->getFieldName() == '' ) continue;
- $text .= "|" . $field->getFieldName() . "=\n";
- }
- $templateFooter = wfMessage( 'sf_template_docufooter' )->inContentLanguage()->text();
- $text .= <<<END
-}}
-</pre>
-$templateFooter
-</noinclude><includeonly>
-END;
-
- // Before text
- $text .= $this->mTemplateStart;
-
- // $internalObjText can be either a call to #set_internal
- // or to #subobject (or null); which one we go with
- // depends on whether Semantic Internal Objects is installed,
- // and on the SMW version.
- // Thankfully, the syntaxes of #set_internal and #subobject
- // are quite similar, so we don't need too much extra logic.
- $internalObjText = null;
- if ( $this->mConnectingProperty ) {
- global $smwgDefaultStore;
- if ( defined( 'SIO_VERSION' ) ) {
- $useSubobject = false;
- $internalObjText = '{{#set_internal:' . $this->mConnectingProperty;
- } elseif ( $smwgDefaultStore == "SMWSQLStore3" ) {
- $useSubobject = true;
- $internalObjText = '{{#subobject:-|' . $this->mConnectingProperty . '={{PAGENAME}}';
- }
- }
- $setText = '';
-
- // Topmost part of table depends on format.
- if ( !$this->mTemplateFormat ) $this->mTemplateFormat = 'standard';
- if ( $this->mTemplateFormat == 'standard' ) {
- $tableText = '{| class="wikitable"' . "\n";
- } elseif ( $this->mTemplateFormat == 'infobox' ) {
- // A CSS style can't be used, unfortunately, since most
- // MediaWiki setups don't have an 'infobox' or
- // comparable CSS class.
- $tableText = <<<END
-{| style="width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;"
-! style="text-align: center; background-color:#ccccff;" colspan="2" |<big>{{PAGENAME}}</big>
-|-
-
-END;
- } else {
- $tableText = '';
- }
-
- foreach ( $this->mTemplateFields as $i => $field ) {
- if ( $field->getFieldName() == '' ) continue;
-
- $fieldString = '{{{' . $field->getFieldName() . '|}}}';
- if ( !is_null( $field->getNamespace() ) ) {
- $fieldString = $field->getNamespace() . ':' . $fieldString;
- }
- $separator = '';
-
- $fieldStart = $this->mFieldStart;
- wfRunHooks('SFTemplateFieldStart', array( $field, &$fieldStart ) );
- $fieldEnd = $this->mFieldEnd;
- wfRunHooks('SFTemplateFieldEnd', array( $field, &$fieldEnd ) );
-
- $fieldLabel = $field->getLabel();
- if ( $fieldLabel == '' ) {
- $fieldLabel = $field->getFieldName();
- }
- $fieldDisplay = $field->getDisplay();
- $fieldProperty = $field->getSemanticProperty();
- $fieldIsList = $field->isList();
-
- // Header/field label column
- if ( is_null( $fieldDisplay ) ) {
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- if ( $i > 0 ) {
- $tableText .= "|-\n";
- }
- $tableText .= '! ' . $fieldLabel . "\n";
- } elseif ( $this->mTemplateFormat == 'plain' ) {
- $tableText .= "\n'''" . $fieldLabel . ":''' ";
- } elseif ( $this->mTemplateFormat == 'sections' ) {
- $tableText .= "\n==" . $fieldLabel . "==\n";
- }
- } elseif ( $fieldDisplay == 'nonempty' ) {
- if ( $this->mTemplateFormat == 'plain' || $this->mTemplateFormat == 'sections' ) {
- $tableText .= "\n";
- }
- $tableText .= '{{#if:' . $fieldString . '|';
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- if ( $i > 0 ) {
- $tableText .= "\n{{!}}-\n";
- }
- $tableText .= '! ' . $fieldLabel . "\n";
- $separator = '{{!}}';
- } elseif ( $this->mTemplateFormat == 'plain' ) {
- $tableText .= "'''" . $fieldLabel . ":''' ";
- $separator = '';
- } elseif ( $this->mTemplateFormat == 'sections' ) {
- $tableText .= '==' . $fieldLabel . "==\n";
- $separator = '';
- }
- } // If it's 'hidden', do nothing
- // Value column
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- if ( $fieldDisplay == 'hidden' ) {
- } elseif ( $fieldDisplay == 'nonempty' ) {
- //$tableText .= "{{!}} ";
- } else {
- $tableText .= "| ";
- }
- }
- if ( !$fieldProperty ) {
- if ( $separator != '' ) {
- $tableText .= "$separator ";
- }
- if ( $fieldStart != '' ) {
- $tableText .= "$fieldStart ";
- }
- $tableText .= "$fieldString $fieldEnd\n";
- if ( $fieldDisplay == 'nonempty' ) {
- $tableText .= " }}";
- }
- } elseif ( !is_null( $internalObjText ) ) {
- if ( $separator != '' ) {
- $tableText .= "$separator ";
- }
- if ( $fieldStart != '' ) {
- $tableText .= "$fieldStart ";
- }
- $tableText .= "$fieldString $fieldEnd";
- if ( $fieldDisplay == 'nonempty' ) {
- $tableText .= " }}";
- }
- $tableText .= "\n";
- if ( $field->isList() ) {
- if ( $useSubobject ) {
- $internalObjText .= '|' . $fieldProperty . '=' . $fieldString . '|+sep=,';
- } else {
- $internalObjText .= '|' . $fieldProperty . '#list=' . $fieldString;
- }
- } else {
- $internalObjText .= '|' . $fieldProperty . '=' . $fieldString;
- }
- } elseif ( $fieldDisplay == 'hidden' ) {
- if ( $fieldIsList ) {
- $setText .= $fieldProperty . '#list=' . $fieldString . '|';
- } else {
- $setText .= $fieldProperty . '=' . $fieldString . '|';
- }
- } elseif ( $fieldDisplay == 'nonempty' ) {
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- $tableText .= '{{!}} ';
- }
- if ( $fieldStart != '' ) {
- $tableText .= $fieldStart . ' ';
- }
- if ( !is_null( $field->getNamespace() ) ) {
- // Special handling is needed, for at
- // least the File and Category namespaces.
- $tableText .= "[[$fieldString]] {{#set:$fieldProperty=$fieldString}}";
- } else {
- $tableText .= "[[$fieldProperty::$fieldString]]";
- }
- $tableText .= "}} $fieldEnd\n";
- } elseif ( $fieldIsList ) {
- // If this field is meant to contain a list,
- // add on an 'arraymap' function, that will
- // call this semantic markup tag on every
- // element in the list.
- // Find a string that's not in the semantic
- // field call, to be used as the variable.
- $var = "x"; // default - use this if all the attempts fail
- if ( strstr( $fieldProperty, $var ) ) {
- $var_options = array( 'y', 'z', 'xx', 'yy', 'zz', 'aa', 'bb', 'cc' );
- foreach ( $var_options as $option ) {
- if ( ! strstr( $fieldProperty, $option ) ) {
- $var = $option;
- break;
- }
- }
- }
- $tableText .= "{{#arraymap:{{{" . $field->getFieldName() . '|}}}|' . $field->getDelimiter() . "|$var|[[";
- if ( is_null( $field->getNamespace() ) ) {
- $tableText .= "$fieldProperty::$var]]}}\n";
- } else {
- $tableText .= $field->getNamespace() . ":$var]] {{#set:" . $fieldProperty . "=$var}} }}\n";
- }
- } else {
- if ( $fieldStart != '' ) {
- $tableText .= $fieldStart . ' ';
- }
- if ( !is_null( $field->getNamespace() ) ) {
- // Special handling is needed, for at
- // least the File and Category namespaces.
- $tableText .= "[[$fieldString]] {{#set:$fieldProperty=$fieldString}}";
- } else {
- $tableText .= "[[$fieldProperty::$fieldString]]";
- }
- $tableText .= " $fieldEnd\n";
- }
- }
-
- // Add an inline query to the output text, for
- // aggregation, if a property was specified.
- if ( !is_null( $this->mAggregatingProperty ) && $this->mAggregatingProperty !== '' ) {
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- if ( count( $this->mTemplateFields ) > 0 ) {
- $tableText .= "|-\n";
- }
- $tableText .= <<<END
-! $this->mAggregatingLabel
-|
-END;
- } elseif ( $this->mTemplateFormat == 'plain' ) {
- $tableText .= "\n'''" . $this->mAggregatingLabel . ":''' ";
- } elseif ( $this->mTemplateFormat == 'sections' ) {
- $tableText .= "\n==" . $this->mAggregatingLabel . "==\n";
- }
- $tableText .= "{{#ask:[[" . $this->mAggregatingProperty . "::{{SUBJECTPAGENAME}}]]|format=list}}\n";
- }
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- $tableText .= "|}";
- }
- // Leave out newlines if there's an internal property
- // set here (which would mean that there are meant to be
- // multiple instances of this template.)
- if ( is_null( $internalObjText ) ) {
- if ( $this->mTemplateFormat == 'standard' || $this->mTemplateFormat == 'infobox' ) {
- $tableText .= "\n";
- }
- } else {
- $internalObjText .= "}}";
- $text .= $internalObjText;
- }
-
- // Add a call to #set, if necessary
- if ( $setText !== '' ) {
- $setText = '{{#set:' . $setText . "}}\n";
- $text .= $setText;
- }
-
- $text .= $tableText;
- if ( ( $this->mCategoryName !== '' ) && ( $this->mCategoryName !== null ) ) {
- global $wgContLang;
- $namespaceLabels = $wgContLang->getNamespaces();
- $categoryNamespace = $namespaceLabels[NS_CATEGORY];
- $text .= "\n[[$categoryNamespace:" . $this->mCategoryName . "]]\n";
- }
-
- // After text
- $text .= $this->mTemplateEnd;
-
- $text .= "</includeonly>\n";
-
- return $text;
- }
-}
diff --git a/SemanticForms/includes/SF_TemplateField.php b/SemanticForms/includes/SF_TemplateField.php
deleted file mode 100644
index 07aa0002..00000000
--- a/SemanticForms/includes/SF_TemplateField.php
+++ /dev/null
@@ -1,175 +0,0 @@
-<?php
-/**
- * Defines a class, SFTemplateField, that represents a field in a template,
- * including any possible semantic aspects it may have. Used in both creating
- * templates and displaying user-created forms.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-class SFTemplateField {
- private $mFieldName;
- private $mValueLabels;
- private $mLabel;
- private $mSemanticProperty;
- private $mPropertyType;
- private $mPossibleValues;
- private $mIsList;
- private $mDelimiter;
- private $mDisplay;
- private $mInputType;
- private $mNamespace;
-
- static function create( $name, $label, $semanticProperty = null, $isList = null, $delimiter = null, $display = null ) {
- $f = new SFTemplateField();
- $f->mFieldName = trim( str_replace( '\\', '', $name ) );
- $f->mLabel = trim( str_replace( '\\', '', $label ) );
- $f->setSemanticProperty( $semanticProperty );
- $f->mIsList = $isList;
- $f->mDelimiter = $delimiter;
- $f->mDisplay = $display;
- // Delimiter should default to ','.
- if ( $isList && !$delimiter ) {
- $f->mDelimiter = ',';
- }
- return $f;
- }
-
- /**
- * Create an SFTemplateField object based on the corresponding field
- * in the template definition (which we first have to find)
- */
- static function createFromList( $field_name, $all_fields, $strict_parsing ) {
- // See if this field matches one of the fields defined for
- // the template it's part of - if it is, use all available
- // information about that field; if it's not, either create
- // an object for it or not, depending on whether the
- // template has a 'strict' setting in the form definition.
- $the_field = null;
- foreach ( $all_fields as $cur_field ) {
- if ( $field_name == $cur_field->mFieldName ) {
- $the_field = $cur_field;
- break;
- }
- }
- if ( $the_field == null ) {
- if ( $strict_parsing ) {
- return null;
- }
- $the_field = new SFTemplateField();
- }
- return $the_field;
- }
-
- function setTypeAndPossibleValues() {
- // The presence of "-" at the beginning of a property name
- // (which happens if SF tries to parse an inverse query)
- // leads to an error in SMW - just exit if that's the case.
- if ( strpos( $this->mSemanticProperty, '-' ) === 0 ) {
- return;
- }
-
- $proptitle = Title::makeTitleSafe( SMW_NS_PROPERTY, $this->mSemanticProperty );
- if ( $proptitle === null ) {
- return;
- }
-
- $store = SFUtils::getSMWStore();
- // this returns an array of objects
- $allowed_values = SFUtils::getSMWPropertyValues( $store, $proptitle, "Allows value" );
- $label_formats = SFUtils::getSMWPropertyValues( $store, $proptitle, "Has field label format" );
- $propValue = SMWDIProperty::newFromUserLabel( $this->mSemanticProperty );
- $this->mPropertyType = $propValue->findPropertyTypeID();
-
- foreach ( $allowed_values as $allowed_value ) {
- // HTML-unencode each value
- $this->mPossibleValues[] = html_entity_decode( $allowed_value );
- if ( count( $label_formats ) > 0 ) {
- $label_format = $label_formats[0];
- $prop_instance = SMWDataValueFactory::findTypeID( $this->mPropertyType );
- $label_value = SMWDataValueFactory::newTypeIDValue( $prop_instance, $wiki_value );
- $label_value->setOutputFormat( $label_format );
- $this->mValueLabels[$wiki_value] = html_entity_decode( $label_value->getWikiValue() );
- }
- }
-
- // HACK - if there were any possible values, set the property
- // type to be 'enumeration', regardless of what the actual type is
- if ( count( $this->mPossibleValues ) > 0 ) {
- $this->mPropertyType = 'enumeration';
- }
- }
-
- /**
- * Called if a matching property is found for a template field when
- * a template is parsed during the creation of a form.
- */
- function setSemanticProperty( $semantic_property ) {
- $this->mSemanticProperty = str_replace( '\\', '', $semantic_property );
- $this->mPossibleValues = array();
- // set field type and possible values, if any
- $this->setTypeAndPossibleValues();
- }
-
- function getFieldName() {
- return $this->mFieldName;
- }
-
- function getValueLabels() {
- return $this->mValueLabels;
- }
-
- function getLabel() {
- return $this->mLabel;
- }
-
- function getSemanticProperty() {
- return $this->mSemanticProperty;
- }
-
- function getPropertyType() {
- return $this->mPropertyType;
- }
-
- function getPossibleValues() {
- return $this->mPossibleValues;
- }
-
- function isList() {
- return $this->mIsList;
- }
-
- function getDelimiter() {
- return $this->mDelimiter;
- }
-
- function getDisplay() {
- return $this->mDisplay;
- }
-
- function getInputType() {
- return $this->mInputType;
- }
-
- function getNamespace() {
- return $this->mNamespace;
- }
-
- function setTemplateField( $templateField ) {
- $this->mTemplateField = $templateField;
- }
-
- function setLabel( $label ) {
- $this->mLabel = $label;
- }
-
- function setInputType( $inputType ) {
- $this->mInputType = $inputType;
- }
-
- function setNamespace( $namespace ) {
- $this->mNamespace = $namespace;
- }
-}
diff --git a/SemanticForms/includes/SF_TemplateInForm.php b/SemanticForms/includes/SF_TemplateInForm.php
deleted file mode 100644
index 67f2da80..00000000
--- a/SemanticForms/includes/SF_TemplateInForm.php
+++ /dev/null
@@ -1,208 +0,0 @@
-<?php
-/**
- * Represents a template in a user-defined form.
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-class SFTemplateInForm {
- private $mTemplateName;
- private $mLabel;
- private $mAllowMultiple;
- private $mMaxAllowed;
- private $mFields;
-
- /**
- * For a field name and its attached property name located in the
- * template text, create an SFTemplateField object out of it, and
- * add it to the $templateFields array.
- */
- function handlePropertySettingInTemplate( $fieldName, $propertyName, $isList, &$templateFields, $templateText ) {
- global $wgContLang;
- $templateField = SFTemplateField::create( $fieldName, $wgContLang->ucfirst( $fieldName ), $propertyName, $isList );
- $cur_pos = stripos( $templateText, $fieldName.'|' );
- $templateFields[$cur_pos] = $templateField;
- }
-
- /**
- * Get the fields of the template, along with the semantic property
- * attached to each one (if any), by parsing the text of the template.
- */
- function getAllFields() {
- global $wgContLang;
- $templateFields = array();
- $fieldNamesArray = array();
-
- // The way this works is that fields are found and then stored
- // in an array based on their location in the template text, so
- // that they can be returned in the order in which they appear
- // in the template, not the order in which they were found.
- // Some fields can be found more than once (especially if
- // they're part of an "#if" statement), so they're only
- // recorded the first time they're found.
- $template_title = Title::makeTitleSafe( NS_TEMPLATE, $this->mTemplateName );
- if ( isset( $template_title ) ) {
- $templateText = SFUtils::getPageText( $template_title );
- // Ignore 'noinclude' sections and 'includeonly' tags.
- $templateText = StringUtils::delimiterReplace( '<noinclude>', '</noinclude>', '', $templateText );
- $templateText = strtr( $templateText, array( '<includeonly>' => '', '</includeonly>' => '' ) );
-
- // First, look for "arraymap" parser function calls
- // that map a property onto a list.
- if ( $ret = preg_match_all( '/{{#arraymap:{{{([^|}]*:?[^|}]*)[^\[]*\[\[([^:]*:?[^:]*)::/mis', $templateText, $matches ) ) {
- foreach ( $matches[1] as $i => $field_name ) {
- if ( ! in_array( $field_name, $fieldNamesArray ) ) {
- $propertyName = $matches[2][$i];
- $this->handlePropertySettingInTemplate( $field_name, $propertyName, true, $templateFields, $templateText );
- $fieldNamesArray[] = $field_name;
- }
- }
- } elseif ( $ret === false ) {
- // There was an error in the preg_match_all()
- // call - let the user know about it.
- if ( preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR ) {
- print 'Semantic Forms error: backtrace limit exceeded during parsing! Please increase the value of <a href="http://www.php.net/manual/en/pcre.configuration.php#ini.pcre.backtrack-limit">pcre.backtrack_limit</a> in php.ini or LocalSettings.php.';
- }
- }
-
- // Second, look for normal property calls.
- if ( preg_match_all( '/\[\[([^:|\[\]]*:*?[^:|\[\]]*)::{{{([^\]\|}]*).*?\]\]/mis', $templateText, $matches ) ) {
- foreach ( $matches[1] as $i => $propertyName ) {
- $field_name = trim( $matches[2][$i] );
- if ( ! in_array( $field_name, $fieldNamesArray ) ) {
- $propertyName = trim( $propertyName );
- $this->handlePropertySettingInTemplate( $field_name, $propertyName, false, $templateFields, $templateText );
- $fieldNamesArray[] = $field_name;
- }
- }
- }
-
- // Then, get calls to #set, #set_internal and
- // #subobject. (Thankfully, they all have similar
- // syntax).
- if ( preg_match_all( '/#(set|set_internal|subobject):(.*?}}})\s*}}/mis', $templateText, $matches ) ) {
- foreach ( $matches[2] as $match ) {
- if ( preg_match_all( '/([^|{]*?)=\s*{{{([^|}]*)/mis', $match, $matches2 ) ) {
- foreach ( $matches2[1] as $i => $propertyName ) {
- $fieldName = trim( $matches2[2][$i] );
- if ( ! in_array( $fieldName, $fieldNamesArray ) ) {
- $propertyName = trim( $propertyName );
- $this->handlePropertySettingInTemplate( $fieldName, $propertyName, false, $templateFields, $templateText );
- $fieldNamesArray[] = $fieldName;
- }
- }
- }
- }
- }
-
- // Then, get calls to #declare. (This is really rather
- // optional, since no one seems to use #declare.)
- if ( preg_match_all( '/#declare:(.*?)}}/mis', $templateText, $matches ) ) {
- foreach ( $matches[1] as $match ) {
- $setValues = explode( '|', $match );
- foreach ( $setValues as $valuePair ) {
- $keyAndVal = explode( '=', $valuePair );
- if ( count( $keyAndVal ) == 2 ) {
- $propertyName = trim( $keyAndVal[0] );
- $fieldName = trim( $keyAndVal[1] );
- if ( ! in_array( $fieldName, $fieldNamesArray ) ) {
- $this->handlePropertySettingInTemplate( $fieldName, $propertyName, false, $templateFields, $templateText );
- $fieldNamesArray[] = $fieldName;
- }
- }
- }
- }
- }
-
- // Finally, get any non-semantic fields defined.
- if ( preg_match_all( '/{{{([^|}]*)/mis', $templateText, $matches ) ) {
- foreach ( $matches[1] as $fieldName ) {
- $fieldName = trim( $fieldName );
- if ( !empty( $fieldName ) && ( ! in_array( $fieldName, $fieldNamesArray ) ) ) {
- $cur_pos = stripos( $templateText, $fieldName );
- $templateFields[$cur_pos] = SFTemplateField::create( $fieldName, $wgContLang->ucfirst( $fieldName ) );
- $fieldNamesArray[] = $fieldName;
- }
- }
- }
- }
- ksort( $templateFields );
- return $templateFields;
- }
-
- static function create( $name, $label = null, $allowMultiple = null, $maxAllowed = null, $formFields = null ) {
- $tif = new SFTemplateInForm();
- $tif->mTemplateName = str_replace( '_', ' ', $name );
- $tif->mFields = array();
- if ( is_null( $formFields ) ) {
- $fields = $tif->getAllFields();
- $field_num = 0;
- foreach ( $fields as $field ) {
- $tif->mFields[] = SFFormField::create( $field_num++, $field );
- }
- } else {
- $tif->mFields = $formFields;
- }
- $tif->mLabel = $label;
- $tif->mAllowMultiple = $allowMultiple;
- $tif->mMaxAllowed = $maxAllowed;
- return $tif;
- }
-
- function getTemplateName() {
- return $this->mTemplateName;
- }
-
- function getFields() {
- return $this->mFields;
- }
-
- function creationHTML( $template_num ) {
- $checked_str = ( $this->mAllowMultiple ) ? "checked" : "";
- $template_str = wfMessage( 'sf_createform_template' )->escaped();
- $template_label_input = wfMessage( 'sf_createform_templatelabelinput' )->escaped();
- $allow_multiple_text = wfMessage( 'sf_createform_allowmultiple' )->escaped();
- $text = <<<END
- <input type="hidden" name="template_$template_num" value="$this->mTemplateName">
- <div class="templateForm">
- <h2>$template_str '$this->mTemplateName'</h2>
- <p>$template_label_input <input size=25 name="label_$template_num" value="$this->mLabel"></p>
- <p><input type="checkbox" name="allow_multiple_$template_num" $checked_str> $allow_multiple_text</p>
- <hr>
-
-END;
- foreach ( $this->mFields as $field ) {
- $text .= $field->creationHTML( $template_num );
- }
- $removeTemplateButton = Html::input(
- 'del_' . $template_num,
- wfMessage( 'sf_createform_removetemplate' )->text(),
- 'submit'
- );
- $text .= "\t" . Html::rawElement( 'p', null, $removeTemplateButton ) . "\n";
- $text .= " </div>\n";
- return $text;
- }
-
- function createMarkup() {
- $text = "{{{for template|" . $this->mTemplateName;
- if ( $this->mAllowMultiple ) {
- $text .= "|multiple";
- }
- if ( $this->mLabel != '' ) {
- $text .= "|label=" . $this->mLabel;
- }
- $text .= "}}}\n";
- // For now, HTML for templates differs for multiple-instance
- // templates; this may change if handling of form definitions
- // gets more sophisticated.
- if ( ! $this->mAllowMultiple ) { $text .= "{| class=\"formtable\"\n"; }
- foreach ( $this->mFields as $i => $field ) {
- $is_last_field = ( $i == count( $this->mFields ) - 1 );
- $text .= $field->createMarkup( $this->mAllowMultiple, $is_last_field );
- }
- if ( ! $this->mAllowMultiple ) { $text .= "|}\n"; }
- $text .= "{{{end template}}}\n";
- return $text;
- }
-}
diff --git a/SemanticForms/includes/SF_Utils.php b/SemanticForms/includes/SF_Utils.php
deleted file mode 100644
index e08b2e77..00000000
--- a/SemanticForms/includes/SF_Utils.php
+++ /dev/null
@@ -1,1148 +0,0 @@
-<?php
-/**
- * Helper functions for the Semantic Forms extension.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-class SFUtils {
-
- /**
- * Creates a link to a special page, using that page's top-level description as the link text.
- */
- public static function linkForSpecialPage( $specialPageName ) {
- $specialPage = SpecialPageFactory::getPage( $specialPageName );
- return Linker::link( $specialPage->getTitle(), $specialPage->getDescription() );
- }
-
- /**
- * Creates the name of the page that appears in the URL;
- * this method is necessary because Title::getPartialURL(), for
- * some reason, doesn't include the namespace
- */
- public static function titleURLString( $title ) {
- $namespace = wfUrlencode( $title->getNsText() );
- if ( $namespace !== '' ) {
- $namespace .= ':';
- }
- if ( MWNamespace::isCapitalized( $title->getNamespace() ) ) {
- global $wgContLang;
- return $namespace . $wgContLang->ucfirst( $title->getPartialURL() );
- } else {
- return $namespace . $title->getPartialURL();
- }
- }
-
- /**
- * A very similar function to titleURLString(), to get the
- * non-URL-encoded title string
- */
- public static function titleString( $title ) {
- $namespace = $title->getNsText();
- if ( $namespace !== '' ) {
- $namespace .= ':';
- }
- if ( MWNamespace::isCapitalized( $title->getNamespace() ) ) {
- global $wgContLang;
- return $namespace . $wgContLang->ucfirst( $title->getText() );
- } else {
- return $namespace . $title->getText();
- }
- }
-
- /**
- * Gets the text contents of a page with the passed-in Title object.
- */
- public static function getPageText( $title ) {
- if ( method_exists( 'WikiPage', 'getContent' ) ) {
- // MW 1.21+
- $wikiPage = new WikiPage( $title );
- $content = $wikiPage->getContent();
-
- if ( $content !== null ) {
- return $content->getNativeData();
- } else {
- return null;
- }
- } else {
- // MW <= 1.20
- $article = new Article( $title );
- return $article->getContent();
- }
- }
-
- /**
- * Helper function to get the SMW data store for different versions
- * of SMW.
- */
- public static function getSMWStore() {
- if ( class_exists( '\SMW\StoreFactory' ) ) {
- // SMW 1.9+
- return \SMW\StoreFactory::getStore();
- } else {
- return smwfGetStore();
- }
- }
-
- /**
- * Helper function to handle getPropertyValues().
- */
- public static function getSMWPropertyValues( $store, $subject, $propID, $requestOptions = null ) {
- if ( is_null( $subject ) ) {
- $page = null;
- } else {
- $page = SMWDIWikiPage::newFromTitle( $subject );
- }
- $property = SMWDIProperty::newFromUserLabel( $propID );
- $res = $store->getPropertyValues( $page, $property, $requestOptions );
- $values = array();
- foreach ( $res as $value ) {
- if ( $value instanceof SMWDIUri ) {
- $values[] = $value->getURI();
- } else {
- // getSortKey() seems to return the
- // correct value for all the other
- // data types.
- $values[] = str_replace( '_', ' ', $value->getSortKey() );
- }
- }
- return $values;
- }
- /**
- * Helper function - gets names of categories for a page;
- * based on Title::getParentCategories(), but simpler
- * - this function doubles as a function to get all categories on
- * the site, if no article is specified
- */
- public static function getCategoriesForPage( $title = null ) {
- $categories = array();
- $db = wfGetDB( DB_SLAVE );
- $conditions = null;
- if ( !is_null( $title ) ) {
- $titlekey = $title->getArticleID();
- if ( $titlekey == 0 ) {
- // Something's wrong - exit
- return $categories;
- }
- $conditions['cl_from'] = $titlekey;
- }
- $res = $db->select(
- 'categorylinks',
- 'DISTINCT cl_to',
- $conditions,
- __METHOD__
- );
- if ( $db->numRows( $res ) > 0 ) {
- while ( $row = $db->fetchRow( $res ) ) {
- $categories[] = $row[0];
- }
- }
- $db->freeResult( $res );
- return $categories;
- }
-
- public static function registerProperty( $id, $typeid, $label ) {
- if ( class_exists( 'SMWDIProperty' ) ) {
- SMWDIProperty::registerProperty( $id, $typeid, $label, true );
- } else {
- SMWPropertyValue::registerProperty( $id, $typeid, $label, true );
- }
- }
-
- public static function initProperties() {
- global $sfgContLang;
-
- // Register all the special properties, in both the wiki's
- // language and, as a backup, in English.
- // For every special property, if it hasn't been translated
- // into the wiki's current language, use the English-language
- // value for both the main special property and the backup.
- $sf_props = $sfgContLang->getPropertyLabels();
- if ( array_key_exists( SF_SP_HAS_DEFAULT_FORM, $sf_props ) ) {
- self::registerProperty( '_SF_DF', '__spf', $sf_props[SF_SP_HAS_DEFAULT_FORM] );
- } else {
- self::registerProperty( '_SF_DF', '__spf', 'Has default form' );
- }
- if ( array_key_exists( SF_SP_HAS_ALTERNATE_FORM, $sf_props ) ) {
- self::registerProperty( '_SF_AF', '__spf', $sf_props[SF_SP_HAS_ALTERNATE_FORM] );
- } else {
- self::registerProperty( '_SF_AF', '__spf', 'Has alternate form' );
- }
- if ( array_key_exists( SF_SP_CREATES_PAGES_WITH_FORM, $sf_props ) ) {
- self::registerProperty( '_SF_CP', '__spf', $sf_props[SF_SP_CREATES_PAGES_WITH_FORM] );
- } else {
- self::registerProperty( '_SF_CP', '__spf', 'Creates pages with form' );
- }
- if ( array_key_exists( SF_SP_PAGE_HAS_DEFAULT_FORM, $sf_props ) ) {
- self::registerProperty( '_SF_PDF', '__spf', $sf_props[SF_SP_PAGE_HAS_DEFAULT_FORM] );
- } else {
- self::registerProperty( '_SF_PDF', '__spf', 'Page has default form' );
- }
- if ( array_key_exists( SF_SP_HAS_FIELD_LABEL_FORMAT, $sf_props ) ) {
- self::registerProperty( '_SF_FLF', '_str', $sf_props[SF_SP_HAS_FIELD_LABEL_FORMAT] );
- } else {
- self::registerProperty( '_SF_FLF', '_str', 'Has field label format' );
- }
-
- // Use hardcoded English values as a backup, in case it's a
- // non-English-language wiki.
- self::registerProperty( '_SF_DF_BACKUP', '__spf', 'Has default form' );
- self::registerProperty( '_SF_AF_BACKUP', '__spf', 'Has alternate form' );
- self::registerProperty( '_SF_CP_BACKUP', '__spf', 'Creates pages with form' );
- self::registerProperty( '_SF_PDF_BACKUP', '__spf', 'Page has default form' );
- self::registerProperty( '_SF_FLF_BACKUP', '_str', 'Has field label format' );
-
- return true;
- }
-
- /**
- * Creates wiki-text for a link to a wiki page
- */
- public static function linkText( $namespace, $name, $text = null ) {
- $title = Title::makeTitleSafe( $namespace, $name );
- if ( is_null( $title ) ) {
- return $name; // TODO maybe report an error here?
- }
- if ( is_null( $text ) ) {
- return '[[:' . $title->getPrefixedText() . '|' . $name . ']]';
- } else {
- return '[[:' . $title->getPrefixedText() . '|' . $text . ']]';
- }
- }
-
- /**
- * Prints the mini-form contained at the bottom of various pages, that
- * allows pages to spoof a normal edit page, that can preview, save,
- * etc.
- */
- public static function printRedirectForm( $title, $page_contents, $edit_summary, $is_save, $is_preview, $is_diff, $is_minor_edit, $watch_this, $start_time, $edit_time ) {
- global $wgUser, $sfgScriptPath;
-
- if ( $is_save ) {
- $action = "wpSave";
- } elseif ( $is_preview ) {
- $action = "wpPreview";
- } else { // $is_diff
- $action = "wpDiff";
- }
-
- $text = <<<END
- <p style="position: absolute; left: 45%; top: 45%;"><img src="$sfgScriptPath/skins/loading.gif" /></p>
-
-END;
- $form_body = Html::hidden( 'wpTextbox1', $page_contents );
- $form_body .= Html::hidden( 'wpSummary', $edit_summary );
- $form_body .= Html::hidden( 'wpStarttime', $start_time );
- $form_body .= Html::hidden( 'wpEdittime', $edit_time );
-
- $form_body .= Html::hidden( 'wpEditToken', $wgUser->isLoggedIn() ? $wgUser->getEditToken() : EDIT_TOKEN_SUFFIX );
- $form_body .= Html::hidden( $action, null );
-
- if ( $is_minor_edit ) {
- $form_body .= Html::hidden( 'wpMinoredit' , null );
- }
- if ( $watch_this ) {
- $form_body .= Html::hidden( 'wpWatchthis', null );
- }
- $text .= Html::rawElement(
- 'form',
- array(
- 'id' => 'editform',
- 'name' => 'editform',
- 'method' => 'post',
- 'action' => $title instanceof Title ? $title->getLocalURL( 'action=submit' ) : $title
- ),
- $form_body
- );
-
- $text .= <<<END
- <script type="text/javascript">
- window.onload = function() {
- document.editform.submit();
- }
- </script>
-
-END;
- wfRunHooks( 'sfPrintRedirectForm', array( $is_save, $is_preview, $is_diff, &$text ) );
- return $text;
- }
-
- /**
- * Javascript files to be added outside of the ResourceLoader -
- * by default, there are none.
- */
- public static function addJavascriptFiles( $parser ) {
- global $wgOut, $wgJsMimeType;
-
- $scripts = array();
-
- wfRunHooks( 'sfAddJavascriptFiles', array( &$scripts ) );
-
- foreach ( $scripts as $js ) {
- if ( $parser ) {
- $script = "<script type=\"$wgJsMimeType\" src=\"$js\"></script>\n";
- $parser->getOutput()->addHeadItem( $script );
- } else {
- $wgOut->addScriptFile( $js );
- }
- }
- }
-
- /**
- * Includes the necessary Javascript and CSS files for the form
- * to display and work correctly.
- *
- * Accepts an optional Parser instance, or uses $wgOut if omitted.
- */
- public static function addJavascriptAndCSS( $parser = null ) {
- global $wgOut;
-
- // Handling depends on whether or not this form is embedded
- // in another page.
- if ( !$parser ) {
- $wgOut->addMeta( 'robots', 'noindex,nofollow' );
- $output = $wgOut;
- } else {
- $output = $parser->getOutput();
- }
-
- $output->addModules( 'ext.semanticforms.main' );
- $output->addModules( 'ext.semanticforms.fancybox' );
- $output->addModules( 'ext.semanticforms.dynatree' );
- $output->addModules( 'ext.semanticforms.imagepreview' );
- $output->addModules( 'ext.semanticforms.autogrow' );
- $output->addModules( 'ext.semanticforms.submit' );
- $output->addModules( 'ext.semanticforms.checkboxes' );
- $output->addModules( 'ext.semanticforms.select2' );
- $output->addModules( 'ext.smw.tooltips' );
- $output->addModules( 'ext.smw.sorttable' );
-
- self::addJavascriptFiles( $parser );
- }
-
- /**
- * Returns an array of all form names on this wiki.
- */
- public static function getAllForms() {
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( 'page',
- 'page_title',
- array( 'page_namespace' => SF_NS_FORM,
- 'page_is_redirect' => false ),
- __METHOD__,
- array( 'ORDER BY' => 'page_title' ) );
- $form_names = array();
- while ( $row = $dbr->fetchRow( $res ) ) {
- $form_names[] = str_replace( '_', ' ', $row[0] );
- }
- $dbr->freeResult( $res );
- return $form_names;
- }
-
- /**
- * Creates a dropdown of possible form names.
- */
- public static function formDropdownHTML() {
- global $wgContLang;
- $namespace_labels = $wgContLang->getNamespaces();
- $form_label = $namespace_labels[SF_NS_FORM];
- $form_names = SFUtils::getAllForms();
- $select_body = "\n";
- foreach ( $form_names as $form_name ) {
- $select_body .= "\t" . Html::element( 'option', null, $form_name ) . "\n";
- }
- return "\t" . Html::rawElement( 'label', array( 'for' => 'formSelector' ), $form_label . wfMessage( 'colon-separator' )->escaped() ) . "\n" . Html::rawElement( 'select', array( 'id' => 'formSelector', 'name' => 'form' ), $select_body ) . "\n";
- }
-
- /**
- * This function, unlike the others, doesn't take in a substring
- * because it uses the SMW data store, which can't perform
- * case-insensitive queries; for queries with a substring, the
- * function SFAutocompleteAPI::getAllValuesForProperty() exists.
- */
- public static function getAllValuesForProperty( $property_name ) {
- global $sfgMaxAutocompleteValues;
-
- $store = SFUtils::getSMWStore();
- $requestoptions = new SMWRequestOptions();
- $requestoptions->limit = $sfgMaxAutocompleteValues;
- $values = self::getSMWPropertyValues( $store, null, $property_name, $requestoptions );
- sort( $values );
- return $values;
- }
-
- /**
- * Get all the pages that belong to a category and all its
- * subcategories, down a certain number of levels - heavily based on
- * SMW's SMWInlineQuery::includeSubcategories()
- */
- public static function getAllPagesForCategory( $top_category, $num_levels, $substring = null ) {
- if ( 0 == $num_levels ) return $top_category;
- global $sfgMaxAutocompleteValues;
-
- $db = wfGetDB( DB_SLAVE );
- $top_category = str_replace( ' ', '_', $top_category );
- $categories = array( $top_category );
- $checkcategories = array( $top_category );
- $pages = array();
- for ( $level = $num_levels; $level > 0; $level-- ) {
- $newcategories = array();
- foreach ( $checkcategories as $category ) {
- $conditions = array();
- $conditions[] = 'cl_from = page_id';
- $conditions['cl_to'] = $category;
- if ( $substring != null ) {
- $conditions[] = self::getSQLConditionForAutocompleteInColumn( 'page_title', $substring ) . ' OR page_namespace = ' . NS_CATEGORY;
- }
- $res = $db->select( // make the query
- array( 'categorylinks', 'page' ),
- array( 'page_title', 'page_namespace' ),
- $conditions,
- __METHOD__,
- 'SORT BY cl_sortkey' );
- if ( $res ) {
- while ( $res && $row = $db->fetchRow( $res ) ) {
- if ( !array_key_exists( 'page_title', $row ) ) {
- continue;
- }
- $page_namespace = $row['page_namespace'];
- $page_name = $row[ 'page_title' ];
- if ( $page_namespace == NS_CATEGORY ) {
- if ( !in_array( $page_name, $categories ) ) {
- $newcategories[] = $page_name;
- }
- } else {
- $cur_title = Title::makeTitleSafe( $page_namespace, $page_name );
- if ( is_null( $cur_title ) ) {
- // This can happen if it's
- // a "phantom" page, in a
- // namespace that no longer exists.
- continue;
- }
- $cur_value = self::titleString( $cur_title );
- if ( ! in_array( $cur_value, $pages ) ) {
- $pages[] = $cur_value;
- }
- // return if we've reached the maximum number of allowed values
- if ( count( $pages ) > $sfgMaxAutocompleteValues ) {
- // Remove duplicates, and put in alphabetical order.
- $pages = array_unique( $pages );
- sort( $pages );
- return $pages;
- }
- }
- }
- $db->freeResult( $res );
- }
- }
- if ( count( $newcategories ) == 0 ) {
- // Remove duplicates, and put in alphabetical order.
- $pages = array_unique( $pages );
- sort( $pages );
- return $pages;
- } else {
- $categories = array_merge( $categories, $newcategories );
- }
- $checkcategories = array_diff( $newcategories, array() );
- }
- // Remove duplicates, and put in alphabetical order.
- $pages = array_unique( $pages );
- sort( $pages );
- return $pages;
- }
-
- public static function getAllPagesForConcept( $conceptName, $substring = null ) {
- global $sfgMaxAutocompleteValues, $sfgAutocompleteOnAllChars;
-
- $store = SFUtils::getSMWStore();
-
- $conceptTitle = Title::makeTitleSafe( SMW_NS_CONCEPT, $conceptName );
-
- if ( !is_null( $substring ) ) {
- $substring = strtolower( $substring );
- }
-
- // Escape if there's no such concept.
- if ( $conceptTitle == null || !$conceptTitle->exists() ) {
- return "Could not find concept: $conceptName";
- }
-
- $conceptDI = SMWDIWikiPage::newFromTitle( $conceptTitle );
- $desc = new SMWConceptDescription( $conceptDI );
- $printout = new SMWPrintRequest( SMWPrintRequest::PRINT_THIS, "" );
- $desc->addPrintRequest( $printout );
- $query = new SMWQuery( $desc );
- $query->setLimit( $sfgMaxAutocompleteValues );
- $query_result = $store->getQueryResult( $query );
- $pages = array();
- while ( $res = $query_result->getNext() ) {
- $pageName = $res[0]->getNextText( SMW_OUTPUT_WIKI );
- if ( is_null( $substring ) ) {
- $pages[] = $pageName;
- } else {
- // Filter on the substring manually. It would
- // be better to do this filtering in the
- // original SMW query, but that doesn't seem
- // possible yet.
- $lowercasePageName = strtolower( $pageName );
- if ( $sfgAutocompleteOnAllChars ) {
- if ( strpos( $lowercasePageName, $substring ) >= 0 ) {
- $pages[] = $pageName;
- }
- } else {
- if ( strpos( $lowercasePageName, $substring ) === 0 ||
- strpos( $lowercasePageName, ' ' . $substring ) > 0 ) {
- $pages[] = $pageName;
- }
- }
- }
- }
- sort( $pages );
- return $pages;
- }
-
- public static function getAllPagesForNamespace( $namespace_name, $substring = null ) {
- global $wgContLang, $wgLanguageCode;
-
- // Cycle through all the namespace names for this language, and
- // if one matches the namespace specified in the form, get the
- // names of all the pages in that namespace.
-
- // Switch to blank for the string 'Main'.
- if ( $namespace_name == 'Main' || $namespace_name == 'main' ) {
- $namespace_name = '';
- }
- $matchingNamespaceCode = null;
- $namespaces = $wgContLang->getNamespaces();
- foreach ( $namespaces as $curNSCode => $curNSName ) {
- if ( $curNSName == $namespace_name ) {
- $matchingNamespaceCode = $curNSCode;
- }
- }
-
- // If that didn't find anything, and we're in a language
- // other than English, check English as well.
- if ( is_null( $matchingNamespaceCode ) && $wgLanguageCode != 'en' ) {
- $englishLang = Language::factory( 'en' );
- $namespaces = $englishLang->getNamespaces();
- foreach ( $namespaces as $curNSCode => $curNSName ) {
- if ( $curNSName == $namespace_name ) {
- $matchingNamespaceCode = $curNSCode;
- }
- }
- }
-
- if ( is_null( $matchingNamespaceCode ) ) {
- return "Could not find namespace: $namespace_name";
- }
-
- $db = wfGetDB( DB_SLAVE );
- $conditions = array();
- $conditions['page_namespace'] = $matchingNamespaceCode;
- if ( $substring != null ) {
- $conditions[] = SFUtils::getSQLConditionForAutocompleteInColumn( 'page_title', $substring );
- }
- $res = $db->select( 'page',
- 'page_title',
- $conditions, __METHOD__,
- array( 'ORDER BY' => 'page_title' ) );
-
- $pages = array();
- while ( $row = $db->fetchRow( $res ) ) {
- $pages[] = str_replace( '_', ' ', $row[0] );
- }
- $db->freeResult( $res );
-
- return $pages;
- }
-
- /**
- * Creates an array of values that match the specified source name and
- * type, for use by both Javascript autocompletion and comboboxes.
- */
- public static function getAutocompleteValues( $source_name, $source_type ) {
- if ( $source_name == null ) {
- return null;
- }
-
- // The query depends on whether this is a property, category,
- // concept or namespace.
- if ( $source_type == 'property' ) {
- $names_array = self::getAllValuesForProperty( $source_name );
- } elseif ( $source_type == 'category' ) {
- $names_array = self::getAllPagesForCategory( $source_name, 10 );
- } elseif ( $source_type == 'concept' ) {
- $names_array = self::getAllPagesForConcept( $source_name );
- } else { // i.e., $source_type == 'namespace'
- $names_array = self::getAllPagesForNamespace( $source_name );
- }
- return $names_array;
- }
-
- /**
- * Helper function to get an array of values out of what may be either
- * an array or a delimited string
- */
- public static function getValuesArray( $value, $delimiter ) {
- if ( is_array( $value ) ) {
- return $value;
- } else {
- // remove extra spaces
- return array_map( 'trim', explode( $delimiter, $value ) );
- }
- }
-
- /**
- * Helper function to get an array of labels from an array of values given a mapping template
- */
- public static function getLabels( $values, $templateName ) {
- global $wgParser;
- $labels = array();
- $title = Title::makeTitleSafe( NS_TEMPLATE, $templateName );
- $templateExists = $title->exists();
- foreach ( $values as $value ) {
- if ( $templateExists ) {
- $label = $wgParser->recursiveTagParse( '{{' . $templateName .
- '|' . $value . '}}' );
- if ( $label == '' ) {
- $labels[$value] = $value;
- } else {
- $labels[$value] = $label;
- }
- } else {
- $labels[$value] = $value;
- }
- }
- if ( count( $labels ) == count( array_unique( $labels ) ) ) {
- return $labels;
- }
- $fixed_labels = array();
- foreach ( $labels as $value => $label ) {
- $fixed_labels[$value] = $labels[$value];
- }
- $counts = array_count_values( $fixed_labels );
- foreach ( $counts as $current_label => $count ) {
- if ( $count > 1 ) {
- $matching_keys = array_keys( $labels, $current_label );
- foreach ( $matching_keys as $key ) {
- $fixed_labels[$key] .= ' (' . $key . ')';
- }
- }
- }
- if ( count( $fixed_labels ) == count( array_unique( $fixed_labels ) ) ) {
- return $fixed_labels;
- }
- foreach ( $labels as $value => $label ) {
- $labels[$value] .= ' (' . $value . ')';
- }
- return $labels;
- }
-
- /**
- * Helper function to use mapping template to turn label back into value
- */
- public static function labelToValue( $label, $possible_values, $templateName ) {
- $value = array_search( $label, $possible_values );
- if ( $value === false ) {
- return $label;
- } else {
- return $value;
- }
- }
-
- /**
- * Helper function to map the current value with the mapping template, if the mapping template is set
- */
- public static function valuesToLabels( $valueString, $templateName, $delimiter, $possible_values ) {
- if ( !is_null($delimiter ) ) {
- $values = array_map( 'trim', explode( $delimiter, $valueString ) );
- } else {
- $values = array( $valueString );
- }
- $labels = array();
- foreach ( $values as $value ) {
- if ( array_key_exists( $value, $possible_values ) ) {
- $labels[] = $possible_values[$value];
- } else {
- $labels[] = $value;
- }
- }
- if ( count( $labels ) > 1 ) {
- return $labels;
- } else {
- return $labels[0];
- }
- }
-
- public static function getValuesFromExternalURL( $external_url_alias, $substring ) {
- global $sfgAutocompletionURLs;
- if ( empty( $sfgAutocompletionURLs ) ) {
- return "No external URLs are specified for autocompletion on this wiki";
- }
- if ( ! array_key_exists( $external_url_alias, $sfgAutocompletionURLs ) ) {
- return "Invalid external URL value";
- }
- $url = $sfgAutocompletionURLs[$external_url_alias];
- if ( empty( $url ) ) {
- return "Blank external URL value";
- }
- $url = str_replace( '<substr>', urlencode( $substring ), $url );
- $page_contents = Http::get( $url );
- if ( empty( $page_contents ) ) {
- return "External page contains no contents";
- }
- $data = json_decode( $page_contents );
- if ( empty( $data ) ) {
- return "Could not parse JSON in external page";
- }
- $return_values = array();
- foreach ( $data->sfautocomplete as $val ) {
- $return_values[] = (array)$val;
- }
- return $return_values;
- }
-
- /**
- * A helper function, used by getFormTagComponents().
- */
- public static function convertBackToPipes( $s ) {
- return str_replace( "\1", '|', $s );
- }
-
- /**
- * This function is basically equivalent to calling
- * explode( '|', $str ), except that it doesn't split on pipes
- * that are within parser function calls - i.e., pipes within
- * double curly brackets.
- */
- public static function getFormTagComponents( $str ) {
- // Turn each pipe within double curly brackets into another,
- // unused character (here, "\1"), then do the explode, then
- // convert them back.
- $pattern = '/({{.*)\|(.*}})/';
- while ( preg_match( $pattern, $str, $matches ) ) {
- $str = preg_replace( $pattern, "$1" . "\1" . "$2", $str );
- }
- return array_map( array( 'SFUtils', 'convertBackToPipes' ), explode( '|', $str ) );
- }
-
- /**
- * Gets the word in the wiki's language, as defined in Semantic
- * MediaWiki, for either the value 'yes' or 'no'.
- */
- public static function getWordForYesOrNo( $isYes ) {
- $wordsMsg = ( $isYes ) ? 'smw_true_words' : 'smw_false_words';
- $possibleWords = explode( ',', wfMessage( $wordsMsg )->inContentLanguage()->text() );
- // Get the value in the series that tends to be "yes" or "no" -
- // generally, that's the third word.
- $preferredIndex = 2;
- if ( count( $possibleWords ) > $preferredIndex ) {
- return ucwords( $possibleWords[$preferredIndex] );
- } elseif ( count( $possibleWords ) > 0 ) {
- return ucwords( $possibleWords[0] );
- }
- // If no values are found, just return a number.
- return ( $isYes ) ? '1' : '0';
- }
-
- /**
- * Translates an EditPage error code into a corresponding message ID
- * @param $error The error code
- * @return String
- */
- public static function processEditErrors ( $error ) {
-
- switch ( $error ) {
- case EditPage::AS_SUCCESS_NEW_ARTICLE:
- case EditPage::AS_SUCCESS_UPDATE:
- return null;
-
- case EditPage::AS_SPAM_ERROR:
- return 'spamprotectiontext';
-
- case EditPage::AS_BLOCKED_PAGE_FOR_USER:
- return 'blockedtitle';
-
- case EditPage::AS_IMAGE_REDIRECT_ANON:
- return 'uploadnologin';
-
- case EditPage::AS_READ_ONLY_PAGE_ANON:
- return 'loginreqtitle';
-
- case EditPage::AS_READ_ONLY_PAGE_LOGGED:
- case EditPage::AS_READ_ONLY_PAGE:
- return array( 'readonlytext', array ( wfReadOnlyReason() ) );
-
- case EditPage::AS_RATE_LIMITED:
- return 'actionthrottledtext';
-
- case EditPage::AS_NO_CREATE_PERMISSION:
- return 'nocreatetext';
-
- case EditPage::AS_BLANK_ARTICLE:
- return 'autoedit-blankpage';
-
- case EditPage::AS_IMAGE_REDIRECT_LOGGED:
- return 'badaccess';
-
- case EditPage::AS_HOOK_ERROR_EXPECTED:
- case EditPage::AS_HOOK_ERROR:
- return 'sf_formedit_hookerror';
-
- case EditPage::AS_CONFLICT_DETECTED:
- return 'editconflict';
-
- case EditPage::AS_CONTENT_TOO_BIG:
- case EditPage::AS_ARTICLE_WAS_DELETED:
- case EditPage::AS_SUMMARY_NEEDED:
- case EditPage::AS_TEXTBOX_EMPTY:
- case EditPage::AS_MAX_ARTICLE_SIZE_EXCEEDED:
- case EditPage::AS_END:
- case EditPage::AS_FILTERING:
- default:
- return array( 'internalerror_text', array ( $error ) );
- }
- }
-
- public static function addToAdminLinks( &$admin_links_tree ) {
- $data_structure_label = wfMessage( 'smw_adminlinks_datastructure' )->text();
- $data_structure_section = $admin_links_tree->getSection( $data_structure_label );
- if ( is_null( $data_structure_section ) ) {
- return true;
- }
- $smw_row = $data_structure_section->getRow( 'smw' );
- $smw_row->addItem( ALItem::newFromSpecialPage( 'Templates' ), 'Properties' );
- $smw_row->addItem( ALItem::newFromSpecialPage( 'Forms' ), 'SemanticStatistics' );
- $smw_admin_row = $data_structure_section->getRow( 'smw_admin' );
- $smw_admin_row->addItem( ALItem::newFromSpecialPage( 'CreateClass' ), 'SMWAdmin' );
- $smw_admin_row->addItem( ALItem::newFromSpecialPage( 'CreateProperty' ), 'SMWAdmin' );
- $smw_admin_row->addItem( ALItem::newFromSpecialPage( 'CreateTemplate' ), 'SMWAdmin' );
- $smw_admin_row->addItem( ALItem::newFromSpecialPage( 'CreateForm' ), 'SMWAdmin' );
- $smw_admin_row->addItem( ALItem::newFromSpecialPage( 'CreateCategory' ), 'SMWAdmin' );
- $smw_docu_row = $data_structure_section->getRow( 'smw_docu' );
- $sf_name = wfMessage( 'specialpages-group-sf_group' )->text();
- $sf_docu_label = wfMessage( 'adminlinks_documentation', $sf_name )->text();
- $smw_docu_row->addItem( ALItem::newFromExternalLink( "http://www.mediawiki.org/wiki/Extension:Semantic_Forms", $sf_docu_label ) );
-
- return true;
- }
-
- /**
- * Returns a SQL condition for autocompletion substring value in a column.
- * @param string $value_column Value column name
- * @param string $substring Substring to look for
- * @return SQL condition for use in WHERE clause
- *
- * @author Ilmars Poikans
- * @author Yaron Koren
- */
- public static function getSQLConditionForAutocompleteInColumn( $column, $substring, $replaceSpaces = true ) {
- global $sfgAutocompleteOnAllChars;
-
- $column_value = "LOWER(CONVERT($column USING utf8))";
- if ( $replaceSpaces ) {
- $substring = str_replace( ' ', '_', strtolower( $substring ) );
- }
- $substring = str_replace( "'", "\'", $substring );
- $substring = str_replace( '_', '\_', $substring );
- $substring = str_replace( '%', '\%', $substring );
-
- if ( $sfgAutocompleteOnAllChars ) {
- return "$column_value LIKE '%$substring%'";
- } else {
- $spaceRepresentation = $replaceSpaces ? '\_' : ' ';
- return "$column_value LIKE '$substring%' OR $column_value LIKE '%" . $spaceRepresentation . $substring . "%'";
- }
- }
-
- /**
- * Appends a preview of the actual form, when a page in the "Form"
- * namespace is previewed.
- *
- * @author Solitarius
- * @since 2.4
- *
- * @param EditPage $editpage
- * @param WebRequest $request
- *
- * @return true
- */
- public static function showFormPreview( EditPage $editpage, WebRequest $request ) {
- global $wgOut, $sfgFormPrinter;
-
- wfDebug( __METHOD__ . ": enter.\n" );
- wfProfileIn( __METHOD__ );
-
- // Exit if we're not in preview mode.
- if ( !$editpage->preview ) {
- wfProfileOut( __METHOD__ );
- return true;
- }
- // Exit if we aren't in the "Form" namespace.
- if ( $editpage->getArticle()->getTitle()->getNamespace() != SF_NS_FORM ) {
- wfProfileOut( __METHOD__ );
- return true;
- }
-
- $editpage->previewTextAfterContent .= Html::element( 'h2', null, wfMessage( 'sf-preview-header' )->text() ) . "\n" .
- '<div class="previewnote" style="font-weight: bold">' . $wgOut->parse( wfMessage( 'sf-preview-note' )->text() ) . "</div>\n<hr />\n";
-
- $form_definition = StringUtils::delimiterReplace( '<noinclude>', '</noinclude>', '', $editpage->textbox1 );
- list ( $form_text, $javascript_text, $data_text, $form_page_title, $generated_page_name ) =
- $sfgFormPrinter->formHTML( $form_definition, null, false, null, null, "Semantic Forms form preview dummy title", null );
-
- SFUtils::addJavascriptAndCSS();
- $editpage->previewTextAfterContent .=
- '<div style="margin-top: 15px">' . $form_text . "</div>";
-
- wfProfileOut( __METHOD__ );
-
- return true;
- }
-
- static function createFormLink ( &$parser, $specialPageName, $params ) {
- // Set defaults.
- $inFormName = $inLinkStr = $inLinkType = $inTooltip =
- $inQueryStr = $inTargetName = '';
- if ( $specialPageName == 'RunQuery' ) {
- $inLinkStr = wfMessage( 'runquery' )->text();
- }
- $classStr = '';
- $inQueryArr = array();
- $targetWindow = '_self';
-
- $positionalParameters = false;
-
- // assign params
- // - support unlabelled params, for backwards compatibility
- // - parse and sanitize all parameter values
- foreach ( $params as $i => $param ) {
-
- $elements = explode( '=', $param, 2 );
-
- // set param_name and value
- if ( count( $elements ) > 1 && !$positionalParameters ) {
- $param_name = trim( $elements[0] );
-
- // parse (and sanitize) parameter values
- $value = trim( $parser->recursiveTagParse( $elements[1] ) );
- } else {
- $param_name = null;
-
- // parse (and sanitize) parameter values
- $value = trim( $parser->recursiveTagParse( $param ) );
- }
-
- if ( $param_name == 'form' ) {
- $inFormName = $value;
- } elseif ( $param_name == 'link text' ) {
- $inLinkStr = $value;
- } elseif ( $param_name == 'link type' ) {
- $inLinkType = $value;
- } elseif ( $param_name == 'query string' ) {
- // Change HTML-encoded ampersands directly to
- // URL-encoded ampersands, so that the string
- // doesn't get split up on the '&'.
- $inQueryStr = str_replace( '&amp;', '%26', $value );
-
- parse_str( $inQueryStr, $arr );
- $inQueryArr = self::array_merge_recursive_distinct( $inQueryArr, $arr );
- } elseif ( $param_name == 'tooltip' ) {
- $inTooltip = Sanitizer::decodeCharReferences( $value );
- } elseif ( $param_name == 'target' ) {
- $inTargetName = $value;
- } elseif ( $param_name == null && $value == 'popup' ) {
- self::loadScriptsForPopupForm( $parser );
- $classStr = 'popupformlink';
- } elseif ( $param_name == null && $value == 'new window' ) {
- $targetWindow = '_blank';
- } elseif ( $param_name !== null && !$positionalParameters ) {
- $value = urlencode( $value );
- parse_str( "$param_name=$value", $arr );
- $inQueryArr = self::array_merge_recursive_distinct( $inQueryArr, $arr );
- } elseif ( $i == 0 ) {
- $inFormName = $value;
- $positionalParameters = true;
- } elseif ( $i == 1 ) {
- $inLinkStr = $value;
- } elseif ( $i == 2 ) {
- $inLinkType = $value;
- } elseif ( $i == 3 ) {
- // Change HTML-encoded ampersands directly to
- // URL-encoded ampersands, so that the string
- // doesn't get split up on the '&'.
- $inQueryStr = str_replace( '&amp;', '%26', $value );
-
- parse_str( $inQueryStr, $arr );
- $inQueryArr = self::array_merge_recursive_distinct( $inQueryArr, $arr );
- }
- }
-
- $ad = SpecialPageFactory::getPage( $specialPageName );
- if ( strpos( $inFormName, '/' ) == true ) {
- $query = array( 'form' => $inFormName, 'target' => $inTargetName );
- $link_url = $ad->getTitle()->getLocalURL( $query );
- } else {
- $link_url = $ad->getTitle()->getLocalURL() . "/$inFormName";
- if ( ! empty( $inTargetName ) ) {
- $link_url .= "/$inTargetName";
- }
- $link_url = str_replace( ' ', '_', $link_url );
- }
- $hidden_inputs = "";
- if ( ! empty( $inQueryArr ) ) {
- // Special handling for the buttons - query string
- // has to be turned into hidden inputs.
- if ( $inLinkType == 'button' || $inLinkType == 'post button' ) {
-
- $query_components = explode( '&', http_build_query( $inQueryArr, '', '&' ) );
-
- foreach ( $query_components as $query_component ) {
- $var_and_val = explode( '=', $query_component, 2 );
- if ( count( $var_and_val ) == 2 ) {
- $hidden_inputs .= Html::hidden( urldecode( $var_and_val[0] ), urldecode( $var_and_val[1] ) );
- }
- }
- } else {
- $link_url .= ( strstr( $link_url, '?' ) ) ? '&' : '?';
- $link_url .= str_replace( '+', '%20', http_build_query( $inQueryArr, '', '&' ) );
- }
- }
- if ( $inLinkType == 'button' || $inLinkType == 'post button' ) {
- $formMethod = ( $inLinkType == 'button' ) ? 'get' : 'post';
- $str = Html::rawElement( 'form', array( 'action' => $link_url, 'method' => $formMethod, 'class' => $classStr, 'target' => $targetWindow ),
-
- // Html::rawElement() before MW 1.21 or so drops the type attribute
- // do not use Html::rawElement() for buttons!
- '<button ' . Html::expandAttributes( array( 'type' => 'submit', 'value' => $inLinkStr ) ) . '>' . $inLinkStr . '</button>' .
- $hidden_inputs
- );
- } else {
- // If a target page has been specified but it doesn't
- // exist, make it a red link.
- if ( ! empty( $inTargetName ) ) {
- $targetTitle = Title::newFromText( $inTargetName );
- if ( is_null( $targetTitle ) || !$targetTitle->exists() ) {
- $classStr .= " new";
- }
- }
- $str = Html::rawElement( 'a', array( 'href' => $link_url, 'class' => $classStr, 'title' => $inTooltip, 'target' => $targetWindow ), $inLinkStr );
- }
-
- return $str;
- }
-
- static function loadScriptsForPopupForm( &$parser ) {
- $parser->getOutput()->addModules( 'ext.semanticforms.popupformedit' );
- return true;
- }
-
- /**
- * array_merge_recursive merges arrays, but it converts values with duplicate
- * keys to arrays rather than overwriting the value in the first array with the duplicate
- * value in the second array, as array_merge does.
- *
- * array_merge_recursive_distinct does not change the datatypes of the values in the arrays.
- * Matching keys' values in the second array overwrite those in the first array.
- *
- * Parameters are passed by reference, though only for performance reasons. They're not
- * altered by this function.
- *
- * See http://www.php.net/manual/en/function.array-merge-recursive.php#92195
- *
- * @param array $array1
- * @param array $array2
- * @return array
- * @author Daniel <daniel (at) danielsmedegaardbuus (dot) dk>
- * @author Gabriel Sobrinho <gabriel (dot) sobrinho (at) gmail (dot) com>
- */
- public static function array_merge_recursive_distinct( array &$array1, array &$array2 ) {
-
- $merged = $array1;
-
- foreach ( $array2 as $key => &$value ) {
- if ( is_array( $value ) && isset( $merged[$key] ) && is_array( $merged[$key] ) ) {
- $merged[$key] = self::array_merge_recursive_distinct( $merged[$key], $value );
- } else {
- $merged[$key] = $value;
- }
- }
-
- return $merged;
- }
-
- /**
- * Register the namespaces for Semantic Forms.
- * @see https://www.mediawiki.org/wiki/Manual:Hooks/CanonicalNamespaces
- *
- * @since 2.4.1
- *
- * @param array $list
- *
- * @return true
- */
- public static function registerNamespaces( array &$list ) {
- global $wgNamespacesWithSubpages;
-
- $list[SF_NS_FORM] = 'Form';
- $list[SF_NS_FORM_TALK] = 'Form_talk';
-
- // Support subpages only for talk pages by default
- $wgNamespacesWithSubpages = $wgNamespacesWithSubpages + array(
- SF_NS_FORM_TALK => true
- );
-
- return true;
- }
-
- /**
- * returns an array of pages that are result of the semantic query
- * @param $rawQueryString string - the query string like [[Category:Trees]][[age::>1000]]
- * @return array of SMWDIWikiPage objects representing the result
- */
- public static function getAllPagesForQuery( $rawQuery ) {
- $rawQueryArray = array( $rawQuery );
- SMWQueryProcessor::processFunctionParams( $rawQueryArray, $queryString, $processedParams, $printouts );
- SMWQueryProcessor::addThisPrintout( $printouts, $processedParams );
- $processedParams = SMWQueryProcessor::getProcessedParams( $processedParams, $printouts );
- $queryObj = SMWQueryProcessor::createQuery( $queryString,
- $processedParams,
- SMWQueryProcessor::SPECIAL_PAGE, '', $printouts );
- $res = SFUtils::getSMWStore()->getQueryResult( $queryObj );
- $pages = $res->getResults();
-
- return $pages;
- }
-
- /**
- * Returns a formatted (pseudo) random number
- *
- * @param number $numDigits the min width of the random number
- * @param boolean $hasPadding should the number should be padded with zeros instead of spaces?
- * @return number
- */
- static function makeRandomNumber( $numDigits = 1, $hasPadding = false ) {
- $maxValue = pow( 10, $numDigits ) - 1;
- if ( $maxValue > getrandmax() ) {
- $maxValue = getrandmax();
- }
- $value = rand( 0, $maxValue );
- $format = '%' . ($hasPadding ? '0' : '') . $numDigits . 'd';
- return trim( sprintf( $format, $value ) ); // trim needed, when $hasPadding == false
- }
-
- /**
- * Hook to add PHPUnit test cases.
- * From https://www.mediawiki.org/wiki/Manual:PHP_unit_testing/Writing_unit_tests_for_extensions
- *
- * @return boolean
- */
- public static function onUnitTestsList( &$files ) {
- $testDir = dirname( __DIR__ ) . '/tests/phpunit/includes';
- $files = array_merge( $files, glob( "$testDir/*Test.php" ) );
- return true;
- }
-
-}
diff --git a/SemanticForms/includes/forminputs/SF_CategoriesInput.php b/SemanticForms/includes/forminputs/SF_CategoriesInput.php
deleted file mode 100644
index c3fbdd7c..00000000
--- a/SemanticForms/includes/forminputs/SF_CategoriesInput.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * File holding the SFCategoriesInput class
- *
- * This input type is deprecated - in SF 2.6.2, it was replaced with, and
- * became a wrapper for, the "tree" input type.
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFCategoriesInput class.
- *
- * @ingroup SFFormInput
- */
-class SFCategoriesInput extends SFTreeInput {
- public static function getName() {
- return 'categories';
- }
-
- public static function getOtherPropTypeListsHandled() {
- return array( '_wpg' );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_CategoryInput.php b/SemanticForms/includes/forminputs/SF_CategoryInput.php
deleted file mode 100644
index b48121b2..00000000
--- a/SemanticForms/includes/forminputs/SF_CategoryInput.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-/**
- * File holding the SFCategoryInput class
- *
- * This input type is deprecated - in SF 2.6.2, it was replaced with, and
- * became a wrapper for, the "tree" input type.
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFCategoryInput class.
- *
- * @ingroup SFFormInput
- */
-class SFCategoryInput extends SFTreeInput {
- public static function getName() {
- return 'category';
- }
-
- public static function getOtherPropTypesHandled() {
- return array( '_wpg' );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_CheckboxInput.php b/SemanticForms/includes/forminputs/SF_CheckboxInput.php
deleted file mode 100644
index 753888b7..00000000
--- a/SemanticForms/includes/forminputs/SF_CheckboxInput.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/**
- * File holding the SFCheckboxInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFCheckboxInput class.
- *
- * @ingroup SFFormInput
- */
-class SFCheckboxInput extends SFFormInput {
- public static function getName() {
- return 'checkbox';
- }
-
- public static function getDefaultPropTypes() {
- return array( '_boo' => array() );
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfgFieldNum, $sfgShowOnSelect;
-
- $className = ( $is_mandatory ) ? 'mandatoryField' : 'createboxInput';
- if ( array_key_exists( 'class', $other_args ) ) {
- $className .= ' ' . $other_args['class'];
- }
- $input_id = "input_$sfgFieldNum";
- $disabled_text = ( $is_disabled ) ? 'disabled' : '';
- if ( array_key_exists( 'show on select', $other_args ) ) {
- $className .= ' sfShowIfCheckedCheckbox';
- $div_id = key( $other_args['show on select'] );
- $sfgShowOnSelect[$input_id] = $div_id;
- }
-
- // Can show up here either as an array or a string, depending on
- // whether it came from user input or a wiki page
- if ( is_array( $cur_value ) ) {
- $checked_str = ( array_key_exists( 'value', $cur_value ) && $cur_value['value'] == 'on' ) ? ' checked="checked"' : '';
- } else {
- // Default to false - no need to check if it matches
- // a 'false' word.
- $vlc = strtolower( trim( $cur_value ) );
-
- if ( in_array( $vlc, explode( ',', wfMessage( 'smw_true_words' )->inContentLanguage()->text() ), true ) ) {
- $checked_str = ' checked="checked"';
- } else {
- $checked_str = '';
- }
- }
- $text = <<<END
- <input name="{$input_name}[is_checkbox]" type="hidden" value="true" />
- <input id="$input_id" name="{$input_name}[value]" type="checkbox" class="$className" tabindex="$sfgTabIndex" $checked_str $disabled_text/>
-
-END;
- return $text;
- }
-
- public static function getParameters() {
- // Remove the 'mandatory' option - it doesn't make sense for
- // checkboxes.
- $params = array();
- foreach ( parent::getParameters() as $param ) {
- if ( $param['name'] != 'mandatory' ) {
- $params[] = $param;
- }
- }
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_CheckboxesInput.php b/SemanticForms/includes/forminputs/SF_CheckboxesInput.php
deleted file mode 100644
index 32fc3cd7..00000000
--- a/SemanticForms/includes/forminputs/SF_CheckboxesInput.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * File holding the SFCheckboxesInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFCheckboxesInput class.
- *
- * @ingroup SFFormInput
- */
-class SFCheckboxesInput extends SFMultiEnumInput {
-
- public static function getName() {
- return 'checkboxes';
- }
-
- public static function getDefaultPropTypeLists() {
- return array(
- 'enumeration' => array()
- );
- }
-
- public static function getOtherPropTypeListsHandled() {
- return array();
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfgFieldNum, $sfgShowOnSelect;
-
- $checkboxClass = ( $is_mandatory ) ? 'mandatoryField' : 'createboxInput';
- $labelClass = 'checkboxLabel';
- if ( array_key_exists( 'class', $other_args ) ) {
- $labelClass .= ' ' . $other_args['class'];
- }
- $input_id = "input_$sfgFieldNum";
- // get list delimiter - default is comma
- if ( array_key_exists( 'delimiter', $other_args ) ) {
- $delimiter = $other_args['delimiter'];
- } else {
- $delimiter = ',';
- }
- $cur_values = SFUtils::getValuesArray( $cur_value, $delimiter );
-
- if ( ( $possible_values = $other_args['possible_values'] ) == null ) {
- $possible_values = array();
- }
- $text = '';
- foreach ( $possible_values as $key => $possible_value ) {
- $cur_input_name = $input_name . '[' . $key . ']';
-
- if (
- array_key_exists( 'value_labels', $other_args ) &&
- is_array( $other_args['value_labels'] ) &&
- array_key_exists( $possible_value, $other_args['value_labels'] )
- ) {
- $label = $other_args['value_labels'][$possible_value];
- } else {
- $label = $possible_value;
- }
-
- $checkbox_attrs = array(
- 'id' => $input_id,
- 'tabindex' => $sfgTabIndex,
- 'class' => $checkboxClass,
- );
- if ( in_array( $possible_value, $cur_values ) ) {
- $checkbox_attrs['checked'] = 'checked';
- }
- if ( $is_disabled ) {
- $checkbox_attrs['disabled'] = 'disabled';
- }
- $checkbox_input = Html::input( $cur_input_name, $possible_value, 'checkbox', $checkbox_attrs );
-
- // Put a <label> tag around each checkbox, for CSS
- // purposes as well as to clarify this element.
- $text .= "\t" . Html::rawElement( 'label',
- array( 'class' => $labelClass ),
- $checkbox_input . '&nbsp;' . $label
- ) . "\n";
- $sfgTabIndex++;
- $sfgFieldNum++;
- }
-
- $outerSpanID = "span_$sfgFieldNum";
- $outerSpanClass = 'checkboxesSpan';
- if ( $is_mandatory ) {
- $outerSpanClass .= ' mandatoryFieldSpan';
- }
-
- if ( array_key_exists( 'show select all', $other_args ) ||
- ( count( $possible_values ) >= $GLOBALS[ 'sfgCheckboxesSelectAllMinimum' ] && !array_key_exists( 'hide select all', $other_args ) ) ) {
- $outerSpanClass .= ' select-all';
- }
-
- if ( array_key_exists( 'show on select', $other_args ) ) {
- $outerSpanClass .= ' sfShowIfChecked';
- foreach ( $other_args['show on select'] as $div_id => $options ) {
- if ( array_key_exists( $outerSpanID, $sfgShowOnSelect ) ) {
- $sfgShowOnSelect[$outerSpanID][] = array( $options, $div_id );
- } else {
- $sfgShowOnSelect[$outerSpanID] = array( array( $options, $div_id ) );
- }
- }
- }
-
- $text .= Html::hidden( $input_name . '[is_list]', 1 );
- $outerSpanAttrs = array( 'id' => $outerSpanID, 'class' => $outerSpanClass );
- $text = "\t" . Html::rawElement( 'span', $outerSpanAttrs, $text ) . "\n";
-
- return $text;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_ComboBoxInput.php b/SemanticForms/includes/forminputs/SF_ComboBoxInput.php
deleted file mode 100644
index 8b4b183a..00000000
--- a/SemanticForms/includes/forminputs/SF_ComboBoxInput.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-/**
- * File holding the SFComboBoxInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFComboBoxInput class.
- *
- * @ingroup SFFormInput
- */
-class SFComboBoxInput extends SFFormInput {
- public static function getName() {
- return 'combobox';
- }
-
- public static function getOtherPropTypesHandled() {
- return array( '_wpg', '_str' );
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- // For backward compatibility with pre-SF-2.1 forms
- if ( array_key_exists( 'no autocomplete', $other_args ) &&
- $other_args['no autocomplete'] == true ) {
- unset( $other_args['autocompletion source'] );
- return SFTextInput::getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args );
- }
-
- global $sfgTabIndex, $sfgFieldNum, $sfgEDSettings;
-
- $className = 'sfComboBox';
- if ( $is_mandatory ) {
- $className .= ' mandatoryField';
- }
- if ( array_key_exists( 'class', $other_args ) ) {
- $className .= ' ' . $other_args['class'];
- }
-
- if ( array_key_exists( 'size', $other_args ) ) {
- $size = $other_args['size'];
- } else {
- $size = '35';
- }
- if ( array_key_exists( 'values from external data', $other_args ) ) {
- $autocompleteSettings = 'external data';
- $remoteDataType = null;
- if ( array_key_exists( 'origName', $other_args ) ) {
- $name = $other_args['origName'];
- } else {
- $name = $input_name;
- }
- $sfgEDSettings[$name] = array();
- if ( $other_args['values from external data'] != null ) {
- $sfgEDSettings[$name]['title'] = $other_args['values from external data'];
- }
- if ( array_key_exists( 'image', $other_args ) ) {
- $image_param = $other_args['image'];
- $sfgEDSettings[$name]['image'] = $image_param;
- global $edgValues;
- for ($i = 0; $i < count($edgValues[$image_param]); $i++) {
- $image = $edgValues[$image_param][$i];
- if ( strpos( $image, "http" ) !== 0 ) {
- $file = wfFindFile( $image );
- if ( $file ) {
- $url = $file->getFullUrl();
- $edgValues[$image_param][$i] = $url;
- } else {
- $edgValues[$image_param][$i] = "";
- }
- }
- }
- }
- if ( array_key_exists( 'description', $other_args ) ) {
- $sfgEDSettings[$name]['description'] = $other_args['description'];
- if ( !array_key_exists( 'size', $other_args ) ) {
- $size = '80';//Set larger default size if description is also there
- }
- }
- } else {
- list( $autocompleteSettings, $remoteDataType ) = self::setAutocompleteValues( $other_args );
- }
-
- $inputAttrs = array(
- 'type' => 'text',
- 'id' => "input_$sfgFieldNum",
- 'name' => $input_name,
- 'class' => $className,
- 'tabindex' => $sfgTabIndex,
- 'autocompletesettings' => $autocompleteSettings,
- 'value' => $cur_value,
- 'size' => $size,
- 'disabled' => $is_disabled,
- );
- if ( array_key_exists( 'origName', $other_args ) ) {
- $inputAttrs['origname'] = $other_args['origName'];
- }
- if ( array_key_exists( 'existing values only', $other_args ) ) {
- $inputAttrs['existingvaluesonly'] = 'true';
- }
- if ( array_key_exists( 'placeholder', $other_args ) ) {
- $inputAttrs['placeholder'] = $other_args['placeholder'];
- }
- if ( !is_null( $remoteDataType ) ) {
- $inputAttrs['autocompletedatatype'] = $remoteDataType;
- }
-
- $inputText = Html::rawElement( 'input', $inputAttrs);
-
- $divClass = 'ui-widget';
- if ( $is_mandatory ) {
- $divClass .= ' mandatory';
- }
-
- $text = Html::rawElement( 'div', array( 'class' => $divClass ), $inputText );
- return $text;
- }
-
- public static function setAutocompleteValues( $field_args ) {
- global $sfgAutocompleteValues, $sfgMaxLocalAutocompleteValues;
-
- list( $autocompleteFieldType, $autocompletionSource ) =
- SFTextWithAutocompleteInput::getAutocompletionTypeAndSource( $field_args );
-
- $remoteDataType = null;
- if ( array_key_exists( 'remote autocompletion', $field_args ) && $field_args['remote autocompletion'] == true ) {
- $remoteDataType = $autocompleteFieldType;
- } elseif ( $autocompletionSource !== '' ) {
- // @TODO - that count() check shouldn't be necessary
- if ( array_key_exists( 'possible_values', $field_args ) &&
- count( $field_args['possible_values'] ) > 0 ) {
- $autocompleteValues = $field_args['possible_values'];
- } elseif ( $autocompleteFieldType == 'values' ) {
- $autocompleteValues = explode( ',', $field_args['values'] );
- } else {
- $autocompleteValues = SFUtils::getAutocompleteValues( $autocompletionSource, $autocompleteFieldType );
- }
- if( count($autocompleteValues) > $sfgMaxLocalAutocompleteValues &&
- $autocompleteFieldType != 'values' && !array_key_exists( 'values dependent on', $field_args ) ) {
- $remoteDataType = $autocompleteFieldType;
- }
- $sfgAutocompleteValues[$autocompletionSource] = $autocompleteValues;
- }
- $autocompletionSource = str_replace( "'", "\'", $autocompletionSource );
- return array( $autocompletionSource, $remoteDataType );
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'size',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_size' )->text()
- );
- $params = array_merge( $params, SFEnumInput::getValuesParameters() );
- $params[] = array(
- 'name' => 'existing values only',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_existingvaluesonly' )->text()
- );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_DateInput.php b/SemanticForms/includes/forminputs/SF_DateInput.php
deleted file mode 100644
index ade96563..00000000
--- a/SemanticForms/includes/forminputs/SF_DateInput.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-/**
- * File holding the SFDateInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFDateInput class.
- *
- * @ingroup SFFormInput
- */
-class SFDateInput extends SFFormInput {
- public static function getName() {
- return 'date';
- }
-
- public static function getDefaultPropTypes() {
- return array( '_dat' => array() );
- }
-
- public static function monthDropdownHTML( $cur_month, $input_name, $is_disabled ) {
- global $sfgTabIndex, $wgAmericanDates;
-
- $optionsText = '';
- $month_names = SFFormUtils::getMonthNames();
- // Add a "null" value at the beginning.
- array_unshift( $month_names, null );
- foreach ( $month_names as $i => $name ) {
- if ( is_null( $name ) ) {
- $month_value = null;
- } else {
- // Pad out month to always be two digits.
- $month_value = ( $wgAmericanDates == true ) ? $name : str_pad( $i, 2, '0', STR_PAD_LEFT );
- }
- $optionAttrs = array ( 'value' => $month_value );
- if ( $name == $cur_month || $i == $cur_month ) {
- $optionAttrs['selected'] = 'selected';
- }
- $optionsText .= Html::element( 'option', $optionAttrs, $name );
- }
- $selectAttrs = array(
- 'class' => 'monthInput',
- 'name' => $input_name . '[month]',
- 'tabindex' => $sfgTabIndex
- );
- if ( $is_disabled ) {
- $selectAttrs['disabled'] = 'disabled';
- }
- $text = Html::rawElement( 'select', $selectAttrs, $optionsText );
- return $text;
- }
-
- public static function getMainHTML( $date, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $wgAmericanDates;
-
- $year = $month = $day = null;
-
- if ( $date ) {
- // Can show up here either as an array or a string,
- // depending on whether it came from user input or a
- // wiki page.
- if ( is_array( $date ) ) {
- $year = $date['year'];
- $month = $date['month'];
- $day = $date['day'];
- } else {
- // handle 'default=now'
- if ( $date == 'now' ) {
- global $wgLocaltimezone;
- if ( isset( $wgLocaltimezone ) ) {
- $serverTimezone = date_default_timezone_get();
- date_default_timezone_set( $wgLocaltimezone );
- }
- $date = date( 'Y/m/d' );
- if ( isset( $wgLocaltimezone ) ) {
- date_default_timezone_set( $serverTimezone );
- }
- }
- $actual_date = new SMWTimeValue( '_dat' );
- $actual_date->setUserValue( $date );
- $year = $actual_date->getYear();
- // TODO - the code to convert from negative to
- // BC notation should be in SMW itself.
- if ( $year < 0 ) {
- $year = ( $year * - 1 + 1 ) . ' BC';
- }
- // Use precision of the date to determine
- // whether we should also set the month and
- // day.
- if ( method_exists( $actual_date->getDataItem(), 'getPrecision' ) ) {
- $precision = $actual_date->getDataItem()->getPrecision();
- if ( $precision > SMWDITime::PREC_Y ) {
- $month = $actual_date->getMonth();
- }
- if ( $precision > SMWDITime::PREC_YM ) {
- $day = $actual_date->getDay();
- }
- } else {
- // There's some sort of error - make
- // everything blank.
- $year = null;
- }
- }
- } else {
- // Just keep everything at null.
- }
- $text = "";
- $disabled_text = ( $is_disabled ) ? 'disabled' : '';
- $monthInput = self::monthDropdownHTML( $month, $input_name, $is_disabled );
- $dayInput = ' <input tabindex="' . $sfgTabIndex . '" class="dayInput" name="' . $input_name . '[day]" type="text" value="' . $day . '" size="2" ' . $disabled_text . '/>';
- if ( $wgAmericanDates ) {
- $text .= "$monthInput\n$dayInput\n";
- } else {
- $text .= "$dayInput\n$monthInput\n";
- }
- $text .= ' <input tabindex="' . $sfgTabIndex . '" class="yearInput" name="' . $input_name . '[year]" type="text" value="' . $year . '" size="4" ' . $disabled_text . '/>' . "\n";
- return $text;
- }
-
- public static function getHTML( $date, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- $text = self::getMainHTML( $date, $input_name, $is_mandatory, $is_disabled, $other_args );
- $spanClass = 'dateInput';
- if ( $is_mandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
- $text = Html::rawElement( 'span', array( 'class' => $spanClass ), $text );
- return $text;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_DateTimeInput.php b/SemanticForms/includes/forminputs/SF_DateTimeInput.php
deleted file mode 100644
index b910502d..00000000
--- a/SemanticForms/includes/forminputs/SF_DateTimeInput.php
+++ /dev/null
@@ -1,146 +0,0 @@
-<?php
-/**
- * File holding the SFDateTimeInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFDateTimeInput class.
- *
- * @ingroup SFFormInput
- */
-class SFDateTimeInput extends SFDateInput {
- public static function getName() {
- return 'datetime';
- }
-
- public static function getDefaultPropTypes() {
- return array();
- }
-
- public static function getOtherPropTypesHandled() {
- return array( '_dat' );
- }
-
- public static function getHTML( $datetime, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfg24HourTime;
-
- $include_timezone = array_key_exists( 'include timezone', $other_args );
-
- if ( $datetime ) {
- // Can show up here either as an array or a string,
- // depending on whether it came from user input or a
- // wiki page.
- if ( is_array( $datetime ) ) {
- if ( isset( $datetime['hour'] ) ) {
- $hour = $datetime['hour'];
- }
- if ( isset( $datetime['minute'] ) ) {
- $minute = $datetime['minute'];
- }
- if ( isset( $datetime['second'] ) ) {
- $second = $datetime['second'];
- }
- if ( !$sfg24HourTime ) {
- if ( isset( $datetime['ampm24h'] ) ) {
- $ampm24h = $datetime['ampm24h'];
- }
- }
- if ( isset( $datetime['timezone'] ) ) {
- $timezone = $datetime['timezone'];
- }
- } else {
- // TODO - this should change to use SMW's own
- // date-handling class, just like
- // dateEntryHTML() does.
-
- // Handle 'default=now'.
- if ( $datetime == 'now' ) {
- global $wgLocaltimezone;
- if ( isset( $wgLocaltimezone ) ) {
- $serverTimezone = date_default_timezone_get();
- date_default_timezone_set( $wgLocaltimezone );
- }
- $actual_date = time();
- } else {
- $actual_date = strtotime( $datetime );
- }
- if ( $sfg24HourTime ) {
- $hour = date( 'G', $actual_date );
- } else {
- $hour = date( 'g', $actual_date );
- }
- $minute = date( 'i', $actual_date );
- $second = date( 's', $actual_date );
- if ( !$sfg24HourTime ) {
- $ampm24h = date( 'A', $actual_date );
- }
- $timezone = date( 'T', $actual_date );
- // Restore back to the server's timezone.
- if ( $datetime == 'now' ) {
- if ( isset( $wgLocaltimezone ) ) {
- date_default_timezone_set( $serverTimezone );
- }
- }
- }
- } else {
- $hour = null;
- $minute = null;
- $second = '00'; // default at least this value
- $ampm24h = '';
- $timezone = '';
- }
-
- $text = parent::getMainHTML( $datetime, $input_name, $is_mandatory, $is_disabled, $other_args );
- $disabled_text = ( $is_disabled ) ? 'disabled' : '';
- $text .= ' &#160;<input tabindex="' . $sfgTabIndex . '" name="' . $input_name . '[hour]" type="text" value="' . $hour . '" size="2"/ ' . $disabled_text . '>';
- $sfgTabIndex++;
- $text .= ' :<input tabindex="' . $sfgTabIndex . '" name="' . $input_name . '[minute]" type="text" value="' . $minute . '" size="2"/ ' . $disabled_text . '>';
- $sfgTabIndex++;
- $text .= ':<input tabindex="' . $sfgTabIndex . '" name="' . $input_name . '[second]" type="text" value="' . $second . '" size="2"/ ' . $disabled_text . '>' . "\n";
-
- if ( !$sfg24HourTime ) {
- $sfgTabIndex++;
- $text .= ' <select tabindex="' . $sfgTabIndex . '" name="' . $input_name . "[ampm24h]\" $disabled_text>\n";
- $ampm24h_options = array( '', 'AM', 'PM' );
- foreach ( $ampm24h_options as $value ) {
- $text .= " <option value=\"$value\"";
- if ( $value == $ampm24h ) { $text .= " selected=\"selected\""; }
- $text .= ">$value</option>\n";
- }
- $text .= " </select>\n";
- }
-
- if ( $include_timezone ) {
- $sfgTabIndex++;
- $text .= ' <input tabindex="' . $sfgTabIndex . '" name="' . $input_name . '[timezone]" type="text" value="' . $timezone . '" size="3"/ ' . $disabled_text . '>' . "\n";
- }
-
- return $text;
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'include timezone',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_includetimezone' )->text()
- );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_DropdownInput.php b/SemanticForms/includes/forminputs/SF_DropdownInput.php
deleted file mode 100644
index a6c0c806..00000000
--- a/SemanticForms/includes/forminputs/SF_DropdownInput.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-/**
- * File holding the SFDropdownInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFDropdownInput class.
- *
- * @ingroup SFFormInput
- */
-class SFDropdownInput extends SFEnumInput {
- public static function getName() {
- return 'dropdown';
- }
-
- public static function getDefaultPropTypes() {
- return array(
- 'enumeration' => array()
- );
- }
-
- public static function getOtherPropTypesHandled() {
- return array( '_boo' );
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfgFieldNum, $sfgShowOnSelect;
-
- // Standardize $cur_value
- if ( is_null( $cur_value ) ) { $cur_value = ''; }
-
- $className = ( $is_mandatory ) ? 'mandatoryField' : 'createboxInput';
- if ( array_key_exists( 'class', $other_args ) ) {
- $className .= ' ' . $other_args['class'];
- }
- $input_id = "input_$sfgFieldNum";
- if ( array_key_exists( 'show on select', $other_args ) ) {
- $className .= ' sfShowIfSelected';
- foreach ( $other_args['show on select'] as $div_id => $options ) {
- if ( array_key_exists( $input_id, $sfgShowOnSelect ) ) {
- $sfgShowOnSelect[$input_id][] = array( $options, $div_id );
- } else {
- $sfgShowOnSelect[$input_id] = array( array( $options, $div_id ) );
- }
- }
- }
- $innerDropdown = '';
- // Add a blank value at the beginning, unless this is a
- // mandatory field and there's a current value in place
- // (either through a default value or because we're editing
- // an existing page).
- if ( !$is_mandatory || $cur_value === '' ) {
- $innerDropdown .= " <option value=\"\"></option>\n";
- }
- if ( ( $possible_values = $other_args['possible_values'] ) == null ) {
- // If it's a Boolean property, display 'Yes' and 'No'
- // as the values.
- if ( array_key_exists( 'property_type', $other_args ) && $other_args['property_type'] == '_boo' ) {
- $possible_values = array(
- SFUtils::getWordForYesOrNo( true ),
- SFUtils::getWordForYesOrNo( false ),
- );
- } else {
- $possible_values = array();
- }
- }
- foreach ( $possible_values as $possible_value ) {
- $optionAttrs = array( 'value' => $possible_value );
- if ( $possible_value == $cur_value ) {
- $optionAttrs['selected'] = "selected";
- }
- if (
- array_key_exists( 'value_labels', $other_args ) &&
- is_array( $other_args['value_labels'] ) &&
- array_key_exists( $possible_value, $other_args['value_labels'] )
- )
- {
- $label = $other_args['value_labels'][$possible_value];
- } else {
- $label = $possible_value;
- }
- $innerDropdown .= Html::element( 'option', $optionAttrs, $label );
- }
- $selectAttrs = array(
- 'id' => $input_id,
- 'tabindex' => $sfgTabIndex,
- 'name' => $input_name,
- 'class' => $className
- );
- if ( $is_disabled ) {
- $selectAttrs['disabled'] = 'disabled';
- }
- if ( array_key_exists( 'origName', $other_args ) ) {
- $selectAttrs['origname'] = $other_args['origName'];
- }
- $text = Html::rawElement( 'select', $selectAttrs, $innerDropdown );
- $spanClass = 'inputSpan';
- if ( $is_mandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
- $text = Html::rawElement( 'span', array( 'class' => $spanClass ), $text );
- return $text;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_EnumInput.php b/SemanticForms/includes/forminputs/SF_EnumInput.php
deleted file mode 100644
index c0a5aa24..00000000
--- a/SemanticForms/includes/forminputs/SF_EnumInput.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * File holding the SFEnumInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFEnumInput class.
- * The base class for every form input that holds a pre-set enumeration
- * of values.
- *
- * @ingroup SFFormInput
- */
-abstract class SFEnumInput extends SFFormInput {
-
- public static function getOtherPropTypesHandled() {
- return array( 'enumeration', '_boo' );
- }
-
- public static function getValuesParameters() {
- $params = array();
- $params[] = array(
- 'name' => 'values',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_values' )->text()
- );
- $params[] = array(
- 'name' => 'values from property',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_valuesfromproperty' )->text()
- );
- $params[] = array(
- 'name' => 'values from category',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_valuesfromcategory' )->text()
- );
- $params[] = array(
- 'name' => 'values from namespace',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_valuesfromnamespace' )->text()
- );
- $params[] = array(
- 'name' => 'values from concept',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_valuesfromconcept' )->text()
- );
- return $params;
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params = array_merge( $params, self::getValuesParameters() );
- $params[] = array(
- 'name' => 'show on select',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_showonselect' )->text()
- );
- return $params;
- }
-}
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();
- }
-
-}
diff --git a/SemanticForms/includes/forminputs/SF_ListBoxInput.php b/SemanticForms/includes/forminputs/SF_ListBoxInput.php
deleted file mode 100644
index 6826c171..00000000
--- a/SemanticForms/includes/forminputs/SF_ListBoxInput.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- * File holding the SFListBoxInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFListBoxInput class.
- *
- * @ingroup SFFormInput
- */
-class SFListBoxInput extends SFMultiEnumInput {
-
- public static function getName() {
- return 'listbox';
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'size',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_listboxsize' )->text()
- );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- global $sfgTabIndex, $sfgFieldNum, $sfgShowOnSelect;
-
- $className = ( $this->mIsMandatory ) ? 'mandatoryField' : 'createboxInput';
- if ( array_key_exists( 'class', $this->mOtherArgs ) ) {
- $className .= ' ' . $this->mOtherArgs['class'];
- }
- $input_id = "input_$sfgFieldNum";
- // get list delimiter - default is comma
- if ( array_key_exists( 'delimiter', $this->mOtherArgs ) ) {
- $delimiter = $this->mOtherArgs['delimiter'];
- } else {
- $delimiter = ',';
- }
- $cur_values = SFUtils::getValuesArray( $this->mCurrentValue, $delimiter );
- $className .= ' sfShowIfSelected';
-
- if ( ( $possible_values = $this->mOtherArgs['possible_values'] ) == null ) {
- $possible_values = array();
- }
- $optionsText = '';
- foreach ( $possible_values as $possible_value ) {
- if (
- array_key_exists( 'value_labels', $this->mOtherArgs ) &&
- is_array( $this->mOtherArgs['value_labels'] ) &&
- array_key_exists( $possible_value, $this->mOtherArgs['value_labels'] )
- )
- {
- $optionLabel = $this->mOtherArgs['value_labels'][$possible_value];
- } else {
- $optionLabel = $possible_value;
- }
- $optionAttrs = array( 'value' => $possible_value );
- if ( in_array( $possible_value, $cur_values ) ) {
- $optionAttrs['selected'] = 'selected';
- }
- $optionsText .= Html::element( 'option', $optionAttrs, $optionLabel );
- }
- $selectAttrs = array(
- 'id' => $input_id,
- 'tabindex' => $sfgTabIndex,
- 'name' => $this->mInputName . '[]',
- 'class' => $className,
- 'multiple' => 'multiple'
- );
- if ( array_key_exists( 'size', $this->mOtherArgs ) ) {
- $selectAttrs['size'] = $this->mOtherArgs['size'];
- }
- if ( $this->mIsDisabled ) {
- $selectAttrs['disabled'] = 'disabled';
- }
- $text = Html::rawElement( 'select', $selectAttrs, $optionsText );
- $text .= Html::hidden( $this->mInputName . '[is_list]', 1 );
- if ( $this->mIsMandatory ) {
- $text = Html::rawElement( 'span', array( 'class' => 'inputSpan mandatoryFieldSpan' ), $text );
- }
-
- if ( array_key_exists( 'show on select', $this->mOtherArgs ) ) {
- foreach ( $this->mOtherArgs['show on select'] as $div_id => $options ) {
- if ( array_key_exists( $input_id, $sfgShowOnSelect ) ) {
- $sfgShowOnSelect[$input_id][] = array( $options, $div_id );
- } else {
- $sfgShowOnSelect[$input_id] = array( array( $options, $div_id ) );
- }
- }
- }
-
- return $text;
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_MultiEnumInput.php b/SemanticForms/includes/forminputs/SF_MultiEnumInput.php
deleted file mode 100644
index 7842ca6c..00000000
--- a/SemanticForms/includes/forminputs/SF_MultiEnumInput.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * File holding the SFMultiEnumInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFMultiEnumInput class.
- * The base class for every form input that holds a list of elements, each
- * one from a pre-set enumeration of values.
- *
- * @ingroup SFFormInput
- */
-abstract class SFMultiEnumInput extends SFEnumInput {
-
- public static function getOtherPropTypesHandled() {
- return array();
- }
-
- public static function getOtherPropTypeListsHandled() {
- return array( 'enumeration' );
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'delimiter',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_delimiter' )->text()
- );
- return $params;
- }
-}
-
diff --git a/SemanticForms/includes/forminputs/SF_RadioButtonInput.php b/SemanticForms/includes/forminputs/SF_RadioButtonInput.php
deleted file mode 100644
index c0325d40..00000000
--- a/SemanticForms/includes/forminputs/SF_RadioButtonInput.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-/**
- * File holding the SFRadioButtonInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFRadioButtonInput class.
- *
- * @ingroup SFFormInput
- */
-class SFRadioButtonInput extends SFEnumInput {
- public static function getName() {
- return 'radiobutton';
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfgFieldNum, $sfgShowOnSelect;
-
- // Standardize $cur_value
- if ( is_null( $cur_value ) ) { $cur_value = ''; }
-
- if ( ( $possible_values = $other_args['possible_values'] ) == null ) {
- // If it's a Boolean property, display 'Yes' and 'No'
- // as the values.
- if ( array_key_exists( 'property_type', $other_args ) &&
- $other_args['property_type'] == '_boo' ) {
- $possible_values = array(
- SFUtils::getWordForYesOrNo( true ),
- SFUtils::getWordForYesOrNo( false ),
- );
- } else {
- $possible_values = array();
- }
- }
-
- // Add a "None" value at the beginning, unless this is a
- // mandatory field and there's a current value in place (either
- // through a default value or because we're editing an existing
- // page).
- if ( !$is_mandatory || $cur_value === '' ) {
- array_unshift( $possible_values, '' );
- }
-
- // Set $cur_value to be one of the allowed options, if it isn't
- // already - that makes it easier to automatically have one of
- // the radiobuttons be checked at the beginning.
- if ( !in_array( $cur_value, $possible_values ) ) {
- if ( in_array( '', $possible_values ) ) {
- $cur_value = '';
- } elseif ( count( $possible_values ) == 0 ) {
- $cur_value = '';
- } else {
- $cur_value = $possible_values[0];
- }
- }
-
- $text = "\n";
- $itemClass = 'radioButtonItem';
- if ( array_key_exists( 'class', $other_args ) ) {
- $itemClass .= ' ' . $other_args['class'];
- }
- $itemAttrs = array( 'class' => $itemClass );
-
- foreach ( $possible_values as $possible_value ) {
- $sfgTabIndex++;
- $sfgFieldNum++;
- $input_id = "input_$sfgFieldNum";
-
- $radiobutton_attrs = array(
- 'id' => $input_id,
- 'tabindex' => $sfgTabIndex,
- );
- if ( array_key_exists( 'origName', $other_args ) ) {
- $radiobutton_attrs['origname'] = $other_args['origName'];
- }
- $isChecked = false;
- if ( $cur_value == $possible_value ) {
- $isChecked = true;
- //$radiobutton_attrs['checked'] = true;
- }
- if ( $is_disabled ) {
- $radiobutton_attrs['disabled'] = true;
- }
- if ( $possible_value === '' ) { // blank/"None" value
- $label = wfMessage( 'sf_formedit_none' )->text();
- } elseif (
- array_key_exists( 'value_labels', $other_args ) &&
- is_array( $other_args['value_labels'] ) &&
- array_key_exists( $possible_value, $other_args['value_labels'] )
- ) {
- $label = htmlspecialchars( $other_args['value_labels'][$possible_value] );
- } else {
- $label = $possible_value;
- }
-
- $text .= "\t" . Html::rawElement( 'label', $itemAttrs,
- // Using Xml::radio() here because Html::input()
- // unfortunately doesn't include the "value="
- // attribute if the value is blank - which
- // somehow leads to the string "on" being passed
- // to the page.
- //Html::input( $input_name, $possible_value, 'radio', $radiobutton_attrs ) . " $label" ) . "\n";
- Xml::radio( $input_name, $possible_value, $isChecked, $radiobutton_attrs ) . " $label" ) . "\n";
- }
-
- $spanClass = 'radioButtonSpan';
- if ( array_key_exists( 'class', $other_args ) ) {
- $spanClass .= ' ' . $other_args['class'];
- }
- if ( $is_mandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
-
- $spanID = "span_$sfgFieldNum";
-
- // Do the 'show on select' handling.
- if ( array_key_exists( 'show on select', $other_args ) ) {
- $spanClass .= ' sfShowIfChecked';
- foreach ( $other_args['show on select'] as $div_id => $options ) {
- if ( array_key_exists( $spanID, $sfgShowOnSelect ) ) {
- $sfgShowOnSelect[$spanID][] = array( $options, $div_id );
- } else {
- $sfgShowOnSelect[$spanID] = array( array( $options, $div_id ) );
- }
- }
- }
- $spanAttrs = array(
- 'id' => $spanID,
- 'class' => $spanClass
- );
- $text = Html::rawElement( 'span', $spanAttrs, $text );
-
- return $text;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_TextAreaInput.php b/SemanticForms/includes/forminputs/SF_TextAreaInput.php
deleted file mode 100644
index 24cdc5f3..00000000
--- a/SemanticForms/includes/forminputs/SF_TextAreaInput.php
+++ /dev/null
@@ -1,240 +0,0 @@
-<?php
-
-/**
- * File holding the SFTextAreaInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFTextAreaInput class.
- *
- * @ingroup SFFormInput
- */
-class SFTextAreaInput extends SFFormInput {
-
- protected $mUseWikieditor = false;
-
- /**
- * Constructor for the SFTextAreaInput 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 ) {
-
- global $wgOut;
-
- parent::__construct( $input_number, $cur_value, $input_name, $disabled, $other_args );
-
- if (
- array_key_exists( 'editor', $this->mOtherArgs ) &&
- $this->mOtherArgs['editor'] == 'wikieditor' &&
-
- method_exists( $wgOut, 'getResourceLoader' ) &&
- in_array( 'jquery.wikiEditor', $wgOut->getResourceLoader()->getModuleNames() ) &&
-
- class_exists( 'WikiEditorHooks' )
- ) {
- $this->mUseWikieditor = true;
- $this->addJsInitFunctionData( 'window.ext.wikieditor.init' );
- }
- }
-
-
- public static function getName() {
- return 'textarea';
- }
-
- public static function getDefaultPropTypes() {
- $defaultPropTypes = array( '_cod' => array() );
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- $defaultPropTypes['_txt'] = array();
- }
- return $defaultPropTypes;
- }
-
- public static function getOtherPropTypesHandled() {
- $otherPropTypesHandled = array( '_wpg' );
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- $otherPropTypesHandled[] = '_str';
- } else {
- $otherPropTypesHandled[] = '_txt';
- }
- return $otherPropTypesHandled;
- }
-
- public static function getOtherPropTypeListsHandled() {
- $otherPropTypeListsHandled = array( '_wpg' );
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- $otherPropTypeListsHandled[] = '_str';
- } else {
- $otherPropTypeListsHandled[] = '_txt';
- }
- return $otherPropTypeListsHandled;
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
-
- $params['preload'] = array(
- 'name' => 'preload',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_preload' )->text()
- );
- $params['rows'] = array(
- 'name' => 'rows',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_rows' )->text()
- );
- $params['cols'] = array(
- 'name' => 'cols',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_cols' )->text()
- );
- $params['maxlength'] = array(
- 'name' => 'maxlength',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_maxlength' )->text()
- );
- $params['placeholder'] = array(
- 'name' => 'placeholder',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_placeholder' )->text()
- );
- $params['autogrow'] = array(
- 'name' => 'autogrow',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_autogrow' )->text()
- );
- return $params;
- }
-
- /**
- * 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 $this->mUseWikieditor?'ext.semanticforms.wikieditor':null;
- }
-
- protected function getTextAreaAttributes() {
-
- global $sfgTabIndex, $sfgFieldNum, $wgOut;
-
- // Use a special ID for the free text field -
- // this was originally done for FCKeditor, but maybe it's
- // useful for other stuff too.
- $input_id = $this->mInputName == 'sf_free_text' ? 'sf_free_text' : "input_$sfgFieldNum";
-
- if ( $this->mUseWikieditor ) {
-
- // load modules for all enabled features
- WikiEditorHooks::editPageShowEditFormInitial( $this, $wgOut );
- $className = 'wikieditor ';
- } else {
- $className = '';
- }
-
- $className .= ( $this->mIsMandatory ) ? 'mandatoryField' : 'createboxInput';
-
- if ( array_key_exists( 'class', $this->mOtherArgs ) ) {
- $className .= ' ' . $this->mOtherArgs['class'];
- }
-
- if ( array_key_exists( 'autogrow', $this->mOtherArgs ) ) {
- $className .= ' autoGrow';
- }
-
- if ( array_key_exists( 'rows', $this->mOtherArgs ) ) {
- $rows = $this->mOtherArgs['rows'];
- } else {
- $rows = 5;
- }
-
- $textarea_attrs = array(
- 'tabindex' => $sfgTabIndex,
- 'name' => $this->mInputName,
- 'id' => $input_id,
- 'class' => $className,
- 'rows' => $rows,
- );
-
- if ( array_key_exists( 'cols', $this->mOtherArgs ) ) {
- $textarea_attrs['cols'] = $this->mOtherArgs['cols'];
- // Needed to prevent CSS from overriding the manually-
- // set width.
- $textarea_attrs['style'] = 'width: auto';
- } elseif ( array_key_exists( 'autogrow', $this->mOtherArgs ) ) {
- // If 'autogrow' has been set, automatically set
- // the number of columns - otherwise, the Javascript
- // won't be able to know how many characters there
- // are per line, and thus won't work.
- $textarea_attrs['cols'] = 90;
- $textarea_attrs['style'] = 'width: auto';
- } else {
- $textarea_attrs['cols'] = 90;
- $textarea_attrs['style'] = 'width: 100%';
- }
-
- if ( $this->mIsDisabled ) {
- $textarea_attrs['disabled'] = 'disabled';
- }
-
- if ( array_key_exists( 'maxlength', $this->mOtherArgs ) ) {
- $maxlength = $this->mOtherArgs['maxlength'];
- // For every actual character pressed (i.e., excluding
- // things like the Shift key), reduce the string to its
- // allowed length if it's exceeded that.
- // This JS code is complicated so that it'll work
- // correctly in IE - IE moves the cursor to the end
- // whenever this.value is reset, so we'll make sure to
- // do that only when we need to.
- $maxLengthJSCheck = "if (window.event && window.event.keyCode < 48 && window.event.keyCode != 13) return; if (this.value.length > $maxlength) { this.value = this.value.substring(0, $maxlength); }";
- $textarea_attrs['onKeyDown'] = $maxLengthJSCheck;
- $textarea_attrs['onKeyUp'] = $maxLengthJSCheck;
- }
-
- if ( array_key_exists( 'placeholder', $this->mOtherArgs ) ) {
- $textarea_attrs['placeholder'] = $this->mOtherArgs['placeholder'];
- }
-
- return $textarea_attrs;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
-
- $textarea_attrs = $this->getTextAreaAttributes();
-
- $text = Html::element( 'textarea', $textarea_attrs, $this->mCurrentValue );
- $spanClass = 'inputSpan';
- if ( $this->mIsMandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
- $text = Html::rawElement( 'span', array( 'class' => $spanClass ), $text );
-
- return $text;
-}
-
-}
diff --git a/SemanticForms/includes/forminputs/SF_TextAreaWithAutocompleteInput.php b/SemanticForms/includes/forminputs/SF_TextAreaWithAutocompleteInput.php
deleted file mode 100644
index 72440352..00000000
--- a/SemanticForms/includes/forminputs/SF_TextAreaWithAutocompleteInput.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * File holding the SFTextAreaWithAutocompleteInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFTextAreaWithAutocompleteInput class.
- *
- * @ingroup SFFormInput
- */
-class SFTextAreaWithAutocompleteInput extends SFTextAreaInput {
- public static function getName() {
- return 'textarea with autocomplete';
- }
-
- public static function getDefaultPropTypes() {
- return array();
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params = array_merge( $params, SFTextWithAutocompleteInput::getAutocompletionParameters() );
- return $params;
- }
-
- protected function getTextAreaAttributes() {
- $textarea_attrs = parent::getTextAreaAttributes();
-
- // If 'no autocomplete' was specified, print a regular
- // textarea instead.
- if ( !array_key_exists( 'no autocomplete', $this->mOtherArgs ) ||
- $this->mOtherArgs['no autocomplete'] == false
- ) {
- list( $autocompleteSettings, $remoteDataType, $delimiter ) = SFTextWithAutocompleteInput::setAutocompleteValues( $this->mOtherArgs );
-
- if ( !is_null( $remoteDataType ) ) {
- $textarea_attrs['autocompletedatatype'] = $remoteDataType;
- }
-
- $textarea_attrs['autocompletesettings'] = $autocompleteSettings;
-
- $textarea_attrs['class'] .= ' autocompleteInput';
- }
-
- return $textarea_attrs;
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_TextInput.php b/SemanticForms/includes/forminputs/SF_TextInput.php
deleted file mode 100644
index 0ad85590..00000000
--- a/SemanticForms/includes/forminputs/SF_TextInput.php
+++ /dev/null
@@ -1,286 +0,0 @@
-<?php
-/**
- * File holding the SFTextInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFTextInput class.
- *
- * @ingroup SFFormInput
- */
-class SFTextInput extends SFFormInput {
- public static function getName() {
- return 'text';
- }
-
- public static function getDefaultPropTypes() {
- $defaultPropTypes = array(
- '_num' => array( 'field_type' => 'number' ),
- '_uri' => array( 'field_type' => 'URL' ),
- '_ema' => array( 'field_type' => 'email' )
- );
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- $defaultPropTypes['_str'] = array( 'field_type' => 'string' );
- } else {
- $defaultPropTypes['_txt'] = array( 'field_type' => 'text' );
- }
- return $defaultPropTypes;
- }
-
- public static function getOtherPropTypesHandled() {
- return array( '_wpg', '_geo' );
- }
-
- public static function getDefaultPropTypeLists() {
- $defaultPropTypeLists = array(
- '_num' => array( 'field_type' => 'number', 'is_list' => 'true', 'size' => '100' ),
- '_uri' => array( 'field_type' => 'URL', 'is_list' => 'true' ),
- '_ema' => array( 'field_type' => 'email', 'is_list' => 'true' )
- );
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- $defaultPropTypeLists['_str'] = array( 'field_type' => 'string', 'is_list' => 'true', 'size' => '100' );
- } else {
- $defaultPropTypeLists['_txt'] = array( 'field_type' => 'text', 'is_list' => 'true', 'size' => '100' );
- }
- return $defaultPropTypeLists;
- }
-
- public static function getOtherPropTypeListsHandled() {
- return array( '_wpg' );
- }
-
- /**
- * Gets the HTML for the preview image or null if there is none.
- *
- * @since 2.3.3
- *
- * @param string $imageName
- *
- * @return string|null
- */
- protected static function getPreviewImage( $imageName ) {
- $previewImage = null;
-
- $imageTitle = Title::newFromText( $imageName, NS_FILE );
-
- if ( !is_object( $imageTitle ) ) {
- return $previewImage;
- }
-
- $api = new ApiMain( new FauxRequest( array(
- 'action' => 'query',
- 'format' => 'json',
- 'prop' => 'imageinfo',
- 'iiprop' => 'url',
- 'titles' => $imageTitle->getFullText(),
- 'iiurlwidth' => 200
- ), true ), true );
-
- $api->execute();
- $result = $api->getResultData();
-
- $url = false;
-
- if ( array_key_exists( 'query', $result ) && array_key_exists( 'pages', $result['query'] ) ) {
- foreach ( $result['query']['pages'] as $page ) {
- if ( array_key_exists( 'imageinfo', $page ) ) {
- foreach ( $page['imageinfo'] as $imageInfo ) {
- $url = $imageInfo['thumburl'];
- break;
- }
- }
- }
- }
-
- if ( $url !== false ) {
- $previewImage = Html::element(
- 'img',
- array( 'src' => $url )
- );
- }
-
- return $previewImage;
- }
-
- public static function uploadableHTML( $input_id, $delimiter = null, $default_filename = null, $cur_value = '', $other_args = array() ) {
- $upload_window_page = SpecialPageFactory::getPage( 'UploadWindow' );
- $query_string = "sfInputID=$input_id";
- if ( $delimiter != null ) {
- $query_string .= "&sfDelimiter=$delimiter";
- }
- if ( $default_filename != null ) {
- $query_string .= "&wpDestFile=$default_filename";
- }
- $upload_window_url = $upload_window_page->getTitle()->getFullURL( $query_string );
- $upload_label = wfMessage( 'upload' )->text();
- // We need to set the size by default.
- $style = "width:650 height:500";
-
- $cssClasses = array( 'sfFancyBox', 'sfUploadable' );
-
- $showPreview = array_key_exists( 'image preview', $other_args );
-
- if ( $showPreview ) {
- $cssClasses[] = 'sfImagePreview';
- }
-
- $linkAttrs = array(
- 'href' => $upload_window_url,
- 'class' => implode( ' ', $cssClasses ),
- // The 'title' parameter sets the label below the
- // window; we're leaving it blank, because otherwise
- // it can by mistaken by users for a button, leading
- // to confusion.
- //'title' => $upload_label,
- 'rev' => $style,
- 'data-input-id' => $input_id
- );
-
- $text = "\t" . Html::element( 'a', $linkAttrs, $upload_label ) . "\n";
-
- if ( $showPreview ) {
- $text .= Html::rawElement(
- 'div',
- array( 'id' => $input_id . '_imagepreview', 'class' => 'sfImagePreviewWrapper' ),
- self::getPreviewImage( $cur_value )
- );
- }
-
- return $text;
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfgFieldNum;
-
- // For backward compatibility with pre-SF-2.1 forms
- if ( array_key_exists( 'autocomplete field type', $other_args ) &&
- ! array_key_exists( 'no autocomplete', $other_args ) ) {
- return SFTextWithAutocompleteInput::getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args );
- }
-
- $className = 'createboxInput';
- if ( $is_mandatory ) {
- $className .= ' mandatoryField';
- }
- if ( array_key_exists( 'class', $other_args ) ) {
- $className .= ' ' . $other_args['class'];
- }
- $input_id = "input_$sfgFieldNum";
- // Set size based on pre-set size, or field type - if field
- // type is set, possibly add validation too.
- // (This special handling should only be done if the field
- // holds a single value, not a list of values.)
- $size = 35;
- $inputType = '';
- if ( array_key_exists( 'field_type', $other_args ) &&
- ( !array_key_exists( 'is_list', $other_args ) ||
- !$other_args['is_list'] ) ) {
- if ( $other_args['field_type'] == 'number' ) {
- $size = 10;
- $inputType = 'number';
- } elseif ( $other_args['field_type'] == 'URL' ) {
- $size = 100;
- $inputType = 'URL';
- } elseif ( $other_args['field_type'] == 'email' ) {
- $size = 45;
- $inputType = 'email';
- }
- }
- if ( array_key_exists( 'size', $other_args ) ) {
- $size = $other_args['size'];
- }
-
- $inputAttrs = array(
- 'id' => $input_id,
- 'tabindex' => $sfgTabIndex,
- 'class' => $className,
- 'size' => $size
- );
- if ( $is_disabled ) {
- $inputAttrs['disabled'] = 'disabled';
- }
- if ( array_key_exists( 'maxlength', $other_args ) ) {
- $inputAttrs['maxlength'] = $other_args['maxlength'];
- }
- if ( array_key_exists( 'placeholder', $other_args ) ) {
- $inputAttrs['placeholder'] = $other_args['placeholder'];
- }
- $text = Html::input( $input_name, $cur_value, 'text', $inputAttrs );
-
- if ( array_key_exists( 'uploadable', $other_args ) && $other_args['uploadable'] == true ) {
- if ( array_key_exists( 'is_list', $other_args ) && $other_args['is_list'] == true ) {
- if ( array_key_exists( 'delimiter', $other_args ) ) {
- $delimiter = $other_args['delimiter'];
- } else {
- $delimiter = ',';
- }
- } else {
- $delimiter = null;
- }
- if ( array_key_exists( 'default filename', $other_args ) ) {
- $default_filename = $other_args['default filename'];
- } else {
- $default_filename = '';
- }
-
- $text .= self::uploadableHTML( $input_id, $delimiter, $default_filename, $cur_value, $other_args );
- }
- $spanClass = 'inputSpan';
- if ( $inputType !== '' ) {
- $spanClass .= " {$inputType}Input";
- }
- if ( $is_mandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
- $text = Html::rawElement( 'span', array( 'class' => $spanClass ), $text );
- return $text;
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'size',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_size' )->text()
- );
- $params[] = array(
- 'name' => 'maxlength',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_maxlength' )->text()
- );
- $params[] = array(
- 'name' => 'placeholder',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_placeholder' )->text()
- );
- $params[] = array(
- 'name' => 'uploadable',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_uploadable' )->text()
- );
- $params[] = array(
- 'name' => 'default filename',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_defaultfilename' )->text()
- );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_TextWithAutocompleteInput.php b/SemanticForms/includes/forminputs/SF_TextWithAutocompleteInput.php
deleted file mode 100644
index 7c9cdf34..00000000
--- a/SemanticForms/includes/forminputs/SF_TextWithAutocompleteInput.php
+++ /dev/null
@@ -1,244 +0,0 @@
-<?php
-/**
- * File holding the SFTextWithAutocompleteInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFTextWithAutocompleteInput class.
- *
- * @ingroup SFFormInput
- */
-class SFTextWithAutocompleteInput extends SFTextInput {
- public static function getName() {
- return 'text with autocomplete';
- }
-
- public static function getDefaultPropTypes() {
- return array(
- '_wpg' => array()
- );
- }
-
- public static function getOtherPropTypesHandled() {
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- return array( '_str' );
- } else {
- return array( '_txt' );
- }
- }
-
- public static function getDefaultPropTypeLists() {
- return array();
- }
-
- public static function getOtherPropTypeListsHandled() {
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- return array( '_str' );
- } else {
- return array( '_txt' );
- }
- }
-
- public static function getAutocompletionTypeAndSource( &$field_args ) {
- if ( array_key_exists( 'values from property', $field_args ) ) {
- $autocompletionSource = $field_args['values from property'];
- $autocompleteFieldType = 'property';
- } elseif ( array_key_exists( 'values from category', $field_args ) ) {
- $autocompleteFieldType = 'category';
- $autocompletionSource = $field_args['values from category'];
- } elseif ( array_key_exists( 'values from concept', $field_args ) ) {
- $autocompleteFieldType = 'concept';
- $autocompletionSource = $field_args['values from concept'];
- } elseif ( array_key_exists( 'values from namespace', $field_args ) ) {
- $autocompleteFieldType = 'namespace';
- $autocompletionSource = $field_args['values from namespace'];
- } elseif ( array_key_exists( 'values from url', $field_args ) ) {
- $autocompleteFieldType = 'external_url';
- $autocompletionSource = $field_args['values from url'];
- // Autocompletion from URL is always done remotely.
- $field_args['remote autocompletion'] = true;
- } elseif ( array_key_exists( 'values', $field_args ) ) {
- global $sfgFieldNum;
- $autocompleteFieldType = 'values';
- $autocompletionSource = "values-$sfgFieldNum";
- } elseif ( array_key_exists( 'autocomplete field type', $field_args ) ) {
- $autocompleteFieldType = $field_args['autocomplete field type'];
- $autocompletionSource = $field_args['autocompletion source'];
- } elseif ( array_key_exists( 'semantic_property', $field_args ) ) {
- $autocompletionSource = $field_args['semantic_property'];
- $autocompleteFieldType = 'property';
- } else {
- $autocompleteFieldType = null;
- $autocompletionSource = null;
- }
-
- if ( $autocompleteFieldType != 'external_url' ) {
- global $wgContLang;
- $autocompletionSource = $wgContLang->ucfirst( $autocompletionSource );
- }
-
- return array( $autocompleteFieldType, $autocompletionSource );
- }
-
- public static function setAutocompleteValues( $field_args ) {
- global $sfgAutocompleteValues, $sfgMaxLocalAutocompleteValues;
-
- // Get all autocomplete-related values, plus delimiter value
- // (it's needed also for the 'uploadable' link, if there is one).
- list( $autocompleteFieldType, $autocompletionSource ) =
- self::getAutocompletionTypeAndSource( $field_args );
- $autocompleteSettings = $autocompletionSource;
- $is_list = ( array_key_exists( 'is_list', $field_args ) && $field_args['is_list'] == true );
- if ( $is_list ) {
- $autocompleteSettings .= ',list';
- if ( array_key_exists( 'delimiter', $field_args ) ) {
- $delimiter = $field_args['delimiter'];
- $autocompleteSettings .= ',' . $delimiter;
- } else {
- $delimiter = ',';
- }
- } else {
- $delimiter = null;
- }
-
- $remoteDataType = null;
- if ( array_key_exists( 'remote autocompletion', $field_args ) &&
- $field_args['remote autocompletion'] == true ) {
- $remoteDataType = $autocompleteFieldType;
- } elseif ( $autocompletionSource !== '' ) {
- // @TODO - that count() check shouldn't be necessary
- if ( array_key_exists( 'possible_values', $field_args ) &&
- count( $field_args['possible_values'] ) > 0 ) {
- $autocompleteValues = $field_args['possible_values'];
- } elseif ( $autocompleteFieldType == 'values' ) {
- $autocompleteValues = explode( ',', $field_args['values'] );
- } else {
- $autocompleteValues = SFUtils::getAutocompleteValues( $autocompletionSource, $autocompleteFieldType );
- }
- if( count($autocompleteValues) > $sfgMaxLocalAutocompleteValues &&
- $autocompleteFieldType != 'values' && !array_key_exists( 'values dependent on', $field_args ) ) {
- $remoteDataType = $autocompleteFieldType;
- }
- $sfgAutocompleteValues[$autocompleteSettings] = $autocompleteValues;
- }
- return array( $autocompleteSettings, $remoteDataType, $delimiter );
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- // Backwards compatibility, for pre-SF-2.1 forms:
- // if 'no autocomplete' was specified, switch to SFTextInput.
- if ( array_key_exists( 'no autocomplete', $other_args ) &&
- $other_args['no autocomplete'] == true ) {
- unset( $other_args['autocompletion source'] );
- return SFTextInput::getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args );
- }
-
- global $sfgTabIndex, $sfgFieldNum;
-
- list( $autocompleteSettings, $remoteDataType, $delimiter ) = self::setAutocompleteValues( $other_args );
-
- $className = ( $is_mandatory ) ? 'autocompleteInput mandatoryField' : 'autocompleteInput createboxInput';
- if ( array_key_exists( 'class', $other_args ) ) {
- $className .= ' ' . $other_args['class'];
- }
- $input_id = 'input_' . $sfgFieldNum;
-
- if ( array_key_exists( 'size', $other_args ) ) {
- $size = $other_args['size'];
- } elseif ( array_key_exists( 'is_list', $other_args ) && $other_args['is_list'] ) {
- $size = '100';
- } else {
- $size = '35';
- }
-
- $inputAttrs = array(
- 'id' => $input_id,
- 'size' => $size,
- 'class' => $className,
- 'tabindex' => $sfgTabIndex,
- 'autocompletesettings' => $autocompleteSettings,
- );
- if ( array_key_exists( 'origName', $other_args ) ) {
- $inputAttrs['origName'] = $other_args['origName'];
- }
- if ( !is_null( $remoteDataType ) ) {
- $inputAttrs['autocompletedatatype'] = $remoteDataType;
- }
- if ( $is_disabled ) {
- $inputAttrs['disabled'] = true;
- }
- if ( array_key_exists( 'maxlength', $other_args ) ) {
- $inputAttrs['maxlength'] = $other_args['maxlength'];
- }
- if ( array_key_exists( 'placeholder', $other_args ) ) {
- $inputAttrs['placeholder'] = $other_args['placeholder'];
- }
- $text = "\n\t" . Html::input( $input_name, $cur_value, 'text', $inputAttrs ) . "\n";
-
- if ( array_key_exists( 'uploadable', $other_args ) && $other_args['uploadable'] == true ) {
- if ( array_key_exists( 'default filename', $other_args ) ) {
- $default_filename = $other_args['default filename'];
- } else {
- $default_filename = '';
- }
- $text .= self::uploadableHTML( $input_id, $delimiter, $default_filename, $cur_value, $other_args );
- }
-
- $spanClass = 'inputSpan';
- if ( $is_mandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
- $text = "\n" . Html::rawElement( 'span', array( 'class' => $spanClass ), $text );
-
- return $text;
- }
-
- public static function getAutocompletionParameters() {
- $params = SFEnumInput::getValuesParameters();
- $params[] = array(
- 'name' => 'values from url',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_valuesfromurl' )->text()
- );
- $params[] = array(
- 'name' => 'remote autocompletion',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_remoteautocompletion' )->text()
- );
- $params[] = array(
- 'name' => 'list',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_list' )->text()
- );
- $params[] = array(
- 'name' => 'delimiter',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_delimiter' )->text()
- );
- return $params;
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params = array_merge( $params, self::getAutocompletionParameters() );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_TokensInput.php b/SemanticForms/includes/forminputs/SF_TokensInput.php
deleted file mode 100644
index 26be470f..00000000
--- a/SemanticForms/includes/forminputs/SF_TokensInput.php
+++ /dev/null
@@ -1,182 +0,0 @@
-<?php
-/**
- * File holding the SFTokensInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFTokensInput class.
- *
- * @ingroup SFFormInput
- */
-class SFTokensInput extends SFFormInput {
- public static function getName() {
- return 'tokens';
- }
-
- public static function getDefaultPropTypes() {
- return array();
- }
-
- public static function getOtherPropTypesHandled() {
- $otherPropTypesHandled = array( '_wpg' );
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- $otherPropTypesHandled[] = '_str';
- } else {
- $otherPropTypesHandled[] = '_txt';
- }
- return $otherPropTypesHandled;
- }
-
- public static function getDefaultPropTypeLists() {
- return array(
- '_wpg' => array( 'is_list' => true, 'size' => 100 )
- );
- }
-
- public static function getOtherPropTypeListsHandled() {
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- return array( '_str' );
- } else {
- return array( '_txt' );
- }
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- global $sfgTabIndex, $sfgFieldNum, $sfgEDSettings;
-
- $other_args['is_list'] = true;
-
- if ( array_key_exists( 'values from external data', $other_args ) ) {
- $autocompleteSettings = 'external data';
- $remoteDataType = null;
- if ( array_key_exists( 'origName', $other_args ) ) {
- $name = $other_args['origName'];
- } else {
- $name = $input_name;
- }
- $sfgEDSettings[$name] = array();
- if ( $other_args['values from external data'] != null ) {
- $sfgEDSettings[$name]['title'] = $other_args['values from external data'];
- }
- if ( array_key_exists( 'image', $other_args ) ) {
- $image_param = $other_args['image'];
- $sfgEDSettings[$name]['image'] = $image_param;
- global $edgValues;
- for ($i = 0; $i < count($edgValues[$image_param]); $i++) {
- $image = $edgValues[$image_param][$i];
- if ( strpos( $image, "http" ) !== 0 ) {
- $file = wfFindFile( $image );
- if ( $file ) {
- $url = $file->getFullUrl();
- $edgValues[$image_param][$i] = $url;
- } else {
- $edgValues[$image_param][$i] = "";
- }
- }
- }
- }
- if ( array_key_exists( 'description', $other_args ) ) {
- $sfgEDSettings[$name]['description'] = $other_args['description'];
- }
- } else {
- list( $autocompleteSettings, $remoteDataType, $delimiter ) = SFTextWithAutocompleteInput::setAutocompleteValues( $other_args );
- }
-
- $className = 'sfTokens ';
- $className .= ( $is_mandatory ) ? 'mandatoryField' : 'createboxInput';
- if ( array_key_exists( 'class', $other_args ) ) {
- $className .= ' ' . $other_args['class'];
- }
- $input_id = 'input_' . $sfgFieldNum;
-
- if ( array_key_exists( 'size', $other_args ) ) {
- $size = $other_args['size'];
- } else {
- $size = '100';
- }
-
- $inputAttrs = array(
- 'id' => $input_id,
- 'size' => $size,
- 'class' => $className,
- 'tabindex' => $sfgTabIndex,
- 'autocompletesettings' => $autocompleteSettings,
- );
- if ( array_key_exists( 'origName', $other_args ) ) {
- $inputAttrs['origName'] = $other_args['origName'];
- }
- if ( array_key_exists( 'existing values only', $other_args ) ) {
- $inputAttrs['existingvaluesonly'] = 'true';
- }
- if ( !is_null( $remoteDataType ) ) {
- $inputAttrs['autocompletedatatype'] = $remoteDataType;
- }
- if ( $is_disabled ) {
- $inputAttrs['disabled'] = true;
- }
- if ( array_key_exists( 'maxlength', $other_args ) ) {
- $inputAttrs['maxlength'] = $other_args['maxlength'];
- }
- if ( array_key_exists( 'placeholder', $other_args ) ) {
- $inputAttrs['placeholder'] = $other_args['placeholder'];
- }
- if ( array_key_exists( 'max values', $other_args ) ) {
- $inputAttrs['maxvalues'] = $other_args['max values'];
- }
- $text = "\n\t" . Html::input( $input_name, $cur_value, 'text', $inputAttrs ) . "\n";
-
- $spanClass = 'inputSpan';
- if ( $is_mandatory ) {
- $spanClass .= ' mandatoryFieldSpan';
- }
- $text = "\n" . Html::rawElement( 'span', array( 'class' => $spanClass ), $text );
-
- return $text;
- }
-
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'size',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_size' )->text()
- );
- $params[] = array(
- 'name' => 'placeholder',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_placeholder' )->text()
- );
- $params[] = array(
- 'name' => 'existing values only',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_existingvaluesonly' )->text()
- );
- $params[] = array(
- 'name' => 'max values',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_maxvalues' )->text()
- );
- $params = array_merge( $params, SFTextWithAutocompleteInput::getAutocompletionParameters() );
-
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/includes/forminputs/SF_TreeInput.php b/SemanticForms/includes/forminputs/SF_TreeInput.php
deleted file mode 100644
index 762a52be..00000000
--- a/SemanticForms/includes/forminputs/SF_TreeInput.php
+++ /dev/null
@@ -1,378 +0,0 @@
-<?php
-/**
- * File holding the SFTreeInput class
- *
- * @file
- * @ingroup SF
- *
- * @author Yaron Koren
- * @author Mathias Lidal
- */
-
-/**
- * The SFTreeInput class.
- *
- * @ingroup SFFormInput
- */
-class SFTreeInput extends SFFormInput {
-
- private static $multipleSelect = false;
-
- public static function getName() {
- return 'tree';
- }
-
- public static function getOtherPropTypesHandled() {
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- return array( '_str', '_wpg' );
- } else {
- return array( '_txt', '_wpg' );
- }
- }
-
- public static function getOtherPropTypeListsHandled() {
- if ( defined( 'SMWDataItem::TYPE_STRING' ) ) {
- // SMW < 1.9
- return array( '_str', '_wpg' );
- } else {
- return array( '_txt', '_wpg' );
- }
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- // Handle the now-deprecated 'category' and 'categories'
- // input types.
- if ( $other_args['input type'] == 'category' ) {
- $inputType = "radio";
- self::$multipleSelect = false;
- } elseif ( $other_args['input type'] == 'categories' ) {
- $inputType = "checkbox";
- self::$multipleSelect = true;
- } else {
- $is_list = ( array_key_exists( 'is_list', $other_args ) && $other_args['is_list'] == true );
- if ( $is_list ) {
- $inputType = "checkbox";
- self::$multipleSelect = true;
- } else {
- $inputType = "radio";
- self::$multipleSelect = false;
- }
- }
-
- // get list delimiter - default is comma
- if ( array_key_exists( 'delimiter', $other_args ) ) {
- $delimiter = $other_args['delimiter'];
- } else {
- $delimiter = ',';
- }
-
- $cur_values = SFUtils::getValuesArray( $cur_value, $delimiter );
- if ( array_key_exists( 'height', $other_args ) ) {
- $height = $other_args['height'];
- } else {
- $height = '100';
- }
- if ( array_key_exists( 'width', $other_args ) ) {
- $width = $other_args['width'];
- } else {
- $width = '500';
- }
-
- $dummy_str = "REPLACE THIS TEXT";
- $text = '<div id="' . $input_name . 'treeinput" style="height: ' . $height . 'px; width: ' . $width . 'px;">';
-
- if ( array_key_exists( 'depth', $other_args ) ) {
- $depth = $other_args['depth'];
- } else {
- $depth = '10';
- }
-
- if ( array_key_exists( 'top category', $other_args ) ) {
- $top_category = $other_args['top category'];
-
- $title = self::makeTitle( $top_category );
- if ( $title->getNamespace() != NS_CATEGORY ) {
- return null;
- }
-
- $tree = SFTree::newFromTopCategory( $top_category );
- $hideroot = array_key_exists( 'hideroot', $other_args );
- } elseif ( array_key_exists( 'structure', $other_args ) ) {
- $structure = $other_args['structure'];
- $tree = SFTree::newFromWikiText( $structure );
- $hideroot = true;
- } else {
- // Escape - we can't do anything.
- return null;
- }
-
- $inputText = self::treeToHTML( $tree, $input_name, $cur_values, $hideroot, $depth, $inputType );
-
- // Replace values one at a time, by an incrementing index -
- // inspired by http://bugs.php.net/bug.php?id=11457
- $i = 0;
- while ( ( $a = strpos( $inputText, $dummy_str ) ) > 0 ) {
- $inputText = substr( $inputText, 0, $a ) . $i++ . substr( $inputText, $a + strlen( $dummy_str ) );
- }
- $text .= $inputText;
-
- $text .= '</div>';
-
- return $text;
- }
-
- // Perhaps treeToHTML() and nodeToHTML() should be moved to the
- // SFTree class? Currently SFTree doesn't know about HTML stuff, but
- // maybe it should.
- private static function treeToHTML( $fullTree, $input_name, $current_selection, $hideprefix, $depth, $inputType ) {
- $key_prefix = $input_name . "key";
- $text = '';
- if ( !$hideprefix ) {
- $text .= "<ul>\n";
- }
- $text .= self::nodeToHTML( $fullTree, $key_prefix, $input_name, $current_selection, $hideprefix, $depth, $inputType );
- if ( !$hideprefix ) {
- $text .= "</ul>\n";
- }
- if ( self::$multipleSelect ) {
- $text .= Html::hidden( $input_name . '[is_list]', 1 );
- }
- return $text;
- }
-
- private static function nodeToHTML( $node, $key_prefix, $input_name, $current_selection, $hidenode, $depth, $inputType, $index = 1 ) {
- global $sfgTabIndex, $sfgFieldNum;
-
- $input_id = "input_$sfgFieldNum";
- // HTML IDs can't contain spaces.
- $key_id = str_replace( ' ', '-', "$key_prefix$index" );
- $dataItems = array();
- $li_data = "";
- $input_data = "";
- if ( in_array( $node->title, $current_selection ) ) {
- $li_data .= 'class="selected" ';
- $input_data .= 'checked="checked"';
- }
-
- if ( $depth > 0 ) {
- $dataItems[] = "'expand': true";
- }
-
- if ( $dataItems ) {
- $li_data .= "data=\"" . implode(",", $dataItems) . "\" ";
- }
-
- $text = '';
- if ( !$hidenode ) {
- $dummy_str = "REPLACE THIS TEXT";
- $text .= "<li id=\"$key_id\" $li_data>";
- if ( self::$multipleSelect) {
- $inputName = $input_name . "[" . $dummy_str . "]";
- } else {
- $inputName = $input_name;
- }
- $text .= "<input type=\"$inputType\" tabindex=\"$sfgTabIndex\" name=\"" . $inputName .
- "\" value=\"" . $node->title . "\" id=\"chb-$key_id\" $input_data class=\"hidden\" />";
- $text .= $node->title . "\n";
- }
- if ( array_key_exists( 'children', $node ) ) {
- $text .= "<ul>\n";
- $i = 1;
- foreach ( $node->children as $cat ) {
- $text .= self::nodeToHTML( $cat, $key_id, $input_name, $current_selection, false, $depth - 1, $inputType, $i++ );
- }
- $text .= "</ul>\n";
- }
- return $text;
- }
-
- public static function getParameters() {
- $params = parent::getParameters();
- $params[] = array(
- 'name' => 'top category',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_topcategory' )->text()
- );
- $params[] = array(
- 'name' => 'structure',
- 'type' => 'text',
- 'description' => wfMessage( 'sf_forminputs_structure' )->text()
- );
- $params[] = array(
- 'name' => 'hideroot',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_hideroot' )->text()
- );
- $params[] = array(
- 'name' => 'depth',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_depth' )->text()
- );
- $params[] = array(
- 'name' => 'height',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_height' )->text()
- );
- $params[] = array(
- 'name' => 'width',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_width' )->text()
- );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-
- /**
- * Creates a Title object from a user-provided (and thus unsafe) string
- * @param $title string
- * @return null|Title
- */
- static function makeTitle( $title ) {
- $title = trim( $title );
-
- if ( strval( $title ) === '' ) {
- return null;
- }
-
- # The title must be in the category namespace
- # Ignore a leading Category: if there is one
- $t = Title::newFromText( $title, NS_CATEGORY );
- if ( !$t || $t->getNamespace() != NS_CATEGORY || $t->getInterwiki() != '' ) {
- // If we were given something like "Wikipedia:Foo" or "Template:",
- // try it again but forced.
- $title = "Category:$title";
- $t = Title::newFromText( $title );
- }
- return $t;
- }
-
-}
-
-/**
- * A class that defines a tree - and can populate it based on either
- * wikitext or a category structure.
- *
- * @author Yaron Koren
- */
-class SFTree {
- var $title, $children;
-
- function __construct( $curTitle ) {
- $this->title = $curTitle;
- $this->children = array();
- }
-
- function addChild( $child ) {
- $this->children[] = $child;
- }
-
- /**
- * Turn a manually-created "structure", defined as a bulleted list
- * in wikitext, into a tree. This is based on the concept originated
- * by the "menuselect" input type in the Semantic Forms Inputs
- * extension - the difference here is that the text is manually
- * parsed, instead of being run through the MediaWiki parser.
- */
- public static function newFromWikiText( $wikitext ) {
- // The top node, called "Top", will be ignored, because
- // we'll set "hideroot" to true.
- $fullTree = new SFTree( 'Top' );
- $lines = explode( "\n", $wikitext );
- foreach ( $lines as $line ) {
- $numBullets = 0;
- for ( $i = 0; $i < strlen( $line ) && $line[$i] == '*'; $i++ ) {
- $numBullets++;
- }
- if ( $numBullets == 0 ) continue;
- $lineText = trim( substr( $line, $numBullets ) );
- $curParentNode = $fullTree->getLastNodeForLevel( $numBullets );
- $curParentNode->addChild( new SFTree( $lineText ) );
- }
- return $fullTree;
- }
-
- function getLastNodeForLevel( $level ) {
- if ( $level <= 1 || count( $this->children ) == 0 ) {
- return $this;
- }
- $lastNodeOnCurLevel = end( $this->children );
- return $lastNodeOnCurLevel->getLastNodeForLevel( $level - 1 );
- }
-
- /**
- * @param $top_category String
- * @return mixed
- */
- static function newFromTopCategory( $top_category ) {
- $sfTree = new SFTree( $top_category );
- $defaultDepth = 20;
- $sfTree->populateChildren( $defaultDepth );
- return $sfTree;
- }
-
- /**
- * Recursive function to populate a tree based on category information.
- */
- private function populateChildren( $depth ) {
- if ( $depth == 0 ) return;
- $subcats = self::getSubcategories( $this->title );
- foreach( $subcats as $subcat ) {
- $childTree = new SFTree( $subcat );
- $childTree->populateChildren( $depth - 1 );
- $this->addChild( $childTree );
- }
- }
-
- /**
- * Gets all the subcategories of the passed-in category.
- *
- * @TODO This might not belong in this class.
- *
- * @param Title $title
- * @return array
- */
- private static function getSubcategories( $categoryName ) {
- $dbr = wfGetDb( DB_SLAVE );
-
- $tables = array( 'page', 'categorylinks' );
- $fields = array( 'page_id', 'page_namespace', 'page_title',
- 'page_is_redirect', 'page_len', 'page_latest', 'cl_to',
- 'cl_from' );
- $where = array();
- $joins = array();
- $options = array( 'ORDER BY' => 'cl_type, cl_sortkey' );
-
- $joins['categorylinks'] = array( 'JOIN', 'cl_from = page_id' );
- $where['cl_to'] = str_replace( ' ', '_', $categoryName );
- $options['USE INDEX']['categorylinks'] = 'cl_sortkey';
-
- $tables = array_merge( $tables, array( 'category' ) );
- $fields = array_merge( $fields, array( 'cat_id', 'cat_title', 'cat_subcats', 'cat_pages', 'cat_files' ) );
- $joins['category'] = array( 'LEFT JOIN', array( 'cat_title = page_title', 'page_namespace' => NS_CATEGORY ) );
-
- $res = $dbr->select( $tables, $fields, $where, __METHOD__, $options, $joins );
- $subcats = array();
-
- foreach ( $res as $row ) {
- $t = Title::newFromRow( $row );
- if ( $t->getNamespace() == NS_CATEGORY ) {
- $subcats[] = $t->getText();
- }
- }
- return $subcats;
- }
-
-}
diff --git a/SemanticForms/includes/forminputs/SF_YearInput.php b/SemanticForms/includes/forminputs/SF_YearInput.php
deleted file mode 100644
index 7c0e74c8..00000000
--- a/SemanticForms/includes/forminputs/SF_YearInput.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/**
- * File holding the SFYearInput class
- *
- * @file
- * @ingroup SF
- */
-
-/**
- * The SFYearInput class.
- *
- * @ingroup SFFormInput
- */
-class SFYearInput extends SFTextInput {
- public static function getName() {
- return 'year';
- }
-
- public static function getDefaultPropTypes() {
- return array();
- }
-
- public static function getOtherPropTypesHandled() {
- return array( '_dat' );
- }
-
- public static function getDefaultPropTypeLists() {
- return array();
- }
-
- public static function getOtherPropTypeListsHandled() {
- return array();
- }
-
- public static function getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args ) {
- $other_args['size'] = 4;
- return parent::getHTML( $cur_value, $input_name, $is_mandatory, $is_disabled, $other_args );
- }
-
- public static function getParameters() {
- $params = array();
- $params[] = array(
- 'name' => 'mandatory',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_mandatory' )->text()
- );
- $params[] = array(
- 'name' => 'restricted',
- 'type' => 'boolean',
- 'description' => wfMessage( 'sf_forminputs_restricted' )->text()
- );
- $params[] = array(
- 'name' => 'class',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_class' )->text()
- );
- $params[] = array(
- 'name' => 'default',
- 'type' => 'string',
- 'description' => wfMessage( 'sf_forminputs_default' )->text()
- );
- $params[] = array(
- 'name' => 'size',
- 'type' => 'int',
- 'description' => wfMessage( 'sf_forminputs_size' )->text()
- );
- return $params;
- }
-
- /**
- * Returns the HTML code to be included in the output page for this input.
- */
- public function getHtmlText() {
- return self::getHTML(
- $this->mCurrentValue,
- $this->mInputName,
- $this->mIsMandatory,
- $this->mIsDisabled,
- $this->mOtherArgs
- );
- }
-}
diff --git a/SemanticForms/languages/SF_Aliases.php b/SemanticForms/languages/SF_Aliases.php
deleted file mode 100644
index 7b6a5ec6..00000000
--- a/SemanticForms/languages/SF_Aliases.php
+++ /dev/null
@@ -1,777 +0,0 @@
-<?php
-/**
- * Aliases for special pages
- *
- * @file
- * @ingroup Extensions
- * @ingroup SF
- */
-// @codingStandardsIgnoreFile
-
-$specialPageAliases = array();
-
-/** English (English) */
-$specialPageAliases['en'] = array(
- 'CreateCategory' => array( 'CreateCategory' ),
- 'CreateClass' => array( 'CreateClass' ),
- 'CreateForm' => array( 'CreateForm' ),
- 'CreateProperty' => array( 'CreateProperty' ),
- 'CreateTemplate' => array( 'CreateTemplate' ),
- 'FormEdit' => array( 'FormEdit', 'AddData', 'EditData' ),
- 'FormStart' => array( 'FormStart', 'AddPage' ),
- 'Forms' => array( 'Forms' ),
- 'RunQuery' => array( 'RunQuery' ),
- 'Templates' => array( 'Templates' ),
- 'UploadWindow' => array( 'UploadWindow' ),
-);
-
-/** Arabic (العربية) */
-$specialPageAliases['ar'] = array(
- 'CreateCategory' => array( 'إنشاء_تصنيف' ),
- 'CreateClass' => array( 'إنشاء_رتبة' ),
- 'CreateForm' => array( 'إنشاء_استمارة' ),
- 'CreateProperty' => array( 'إنشاء_خاصية' ),
- 'CreateTemplate' => array( 'إنشاء_قالب' ),
- 'FormEdit' => array( 'تعديل_البيانات' ),
- 'FormStart' => array( 'إضافة_صفحة' ),
- 'Forms' => array( 'استمارات' ),
- 'RunQuery' => array( 'تنفيذ_الاستعلام' ),
- 'Templates' => array( 'قوالب' ),
- 'UploadWindow' => array( 'نافذة_الرفع' ),
-);
-
-/** Aramaic (ܐܪܡܝܐ) */
-$specialPageAliases['arc'] = array(
- 'CreateCategory' => array( 'ܒܪܝ_ܣܕܪܐ' ),
- 'CreateProperty' => array( 'ܒܪܝ_ܕܝܠܝܘ̈ܬܐ' ),
- 'CreateTemplate' => array( 'ܒܪܝ_ܩܠܒܐ' ),
- 'Templates' => array( 'ܩܠܒ̈ܐ' ),
-);
-
-/** Egyptian Spoken Arabic (مصرى) */
-$specialPageAliases['arz'] = array(
- 'CreateCategory' => array( 'اعمل_تصنيف' ),
- 'CreateForm' => array( 'اعمل_استماره' ),
- 'CreateProperty' => array( 'اعمل_ملكيه' ),
- 'CreateTemplate' => array( 'إاعمل_قالب' ),
- 'FormEdit' => array( 'تعديل_الداتا' ),
- 'FormStart' => array( 'زود_صفحه' ),
- 'Forms' => array( 'استمارات' ),
- 'Templates' => array( 'قوالب' ),
- 'UploadWindow' => array( 'ويندو_الأپلود' ),
-);
-
-/** Assamese (অসমীয়া) */
-$specialPageAliases['as'] = array(
- 'CreateCategory' => array( 'শ্ৰেণী_সৃষ্টি_কৰক' ),
- 'Templates' => array( 'সাঁচসমূহ' ),
- 'UploadWindow' => array( 'আপল’ড_ৱিন্দ' ),
-);
-
-/** Banjar (Bahasa Banjar) */
-$specialPageAliases['bjn'] = array(
- 'CreateCategory' => array( 'Ulah_tumbung' ),
- 'CreateForm' => array( 'Ulah_purmulir' ),
- 'CreateTemplate' => array( 'Ulah_citakan' ),
- 'FormEdit' => array( 'Babak_data' ),
- 'FormStart' => array( 'Tambah_tungkaran' ),
- 'Templates' => array( 'Citakan' ),
- 'UploadWindow' => array( 'Lalungkang_paunggahan' ),
-);
-
-/** Breton (brezhoneg) */
-$specialPageAliases['br'] = array(
- 'CreateCategory' => array( 'KrouiñRummad' ),
- 'CreateTemplate' => array( 'KrouiñPatrom' ),
- 'FormEdit' => array( 'OuzhpennañDanvez' ),
- 'FormStart' => array( 'OuzhpennañPajenn' ),
- 'Templates' => array( 'Patromoù' ),
-);
-
-/** Bosnian (bosanski) */
-$specialPageAliases['bs'] = array(
- 'CreateCategory' => array( 'PravljenjeKategorije' ),
- 'CreateForm' => array( 'PravljenjeObrasca' ),
- 'CreateProperty' => array( 'PravljenjeSvojstva' ),
- 'CreateTemplate' => array( 'PravljenjeSablon' ),
- 'FormEdit' => array( 'DodavanjePodataka' ),
- 'FormStart' => array( 'DodavanjeStranice' ),
- 'Forms' => array( 'Obrasci' ),
- 'Templates' => array( 'Sabloni' ),
- 'UploadWindow' => array( 'ProzorPostavljanja' ),
-);
-
-/** буряад (буряад) */
-$specialPageAliases['bxr'] = array(
- 'CreateCategory' => array( 'Категори_үүсхэхэ' ),
-);
-
-/** Chechen (нохчийн) */
-$specialPageAliases['ce'] = array(
- 'CreateCategory' => array( 'Кхолла_категори' ),
- 'CreateTemplate' => array( 'Кхолла_кеп' ),
- 'Templates' => array( 'Кепаш' ),
-);
-
-/** German (Deutsch) */
-$specialPageAliases['de'] = array(
- 'CreateCategory' => array( 'Kategorie_erstellen' ),
- 'CreateClass' => array( 'Klasse_erstellen' ),
- 'CreateForm' => array( 'Formular_erstellen' ),
- 'CreateProperty' => array( 'Attribut_erstellen' ),
- 'CreateTemplate' => array( 'Vorlage_erstellen' ),
- 'FormEdit' => array( 'Mit_Formular_bearbeiten', 'Daten_hinzufügen', 'Daten_bearbeiten' ),
- 'FormStart' => array( 'Mit_Formular_hinzufügen', 'Seite_hinzufügen' ),
- 'Forms' => array( 'Formulare' ),
- 'RunQuery' => array( 'Abfrage_ausführen' ),
- 'Templates' => array( 'Vorlagen' ),
- 'UploadWindow' => array( 'Hochladefenster' ),
-);
-
-/** Zazaki (Zazaki) */
-$specialPageAliases['diq'] = array(
- 'CreateCategory' => array( 'KategoriyaVıraze' ),
- 'CreateClass' => array( 'SınıfeVıraze' ),
- 'CreateForm' => array( 'FormVıraze' ),
- 'CreateProperty' => array( 'XısusiyetiVıraze' ),
- 'CreateTemplate' => array( 'ŞablonVıraze' ),
- 'FormEdit' => array( 'FormiBıvurne', 'MelumatDeke', 'MelumatiBıvırne' ),
- 'FormStart' => array( 'FormSerterin', 'PelaDeke' ),
- 'Forms' => array( 'Formi' ),
- 'RunQuery' => array( 'PersinBerdış' ),
- 'Templates' => array( 'Şabloni' ),
- 'UploadWindow' => array( 'TeqaBarkerdış' ),
-);
-
-/** Greek (Ελληνικά) */
-$specialPageAliases['el'] = array(
- 'CreateCategory' => array( 'ΔημιουργίαΚατηγορίας' ),
- 'CreateClass' => array( 'ΔημιουργίαΚλάσης' ),
- 'CreateForm' => array( 'ΔημιουργίαΦόρμας' ),
- 'CreateProperty' => array( 'ΔημιουργίαΙδιότητας' ),
- 'CreateTemplate' => array( 'ΔημιουργίαΠροτύπου' ),
- 'FormEdit' => array( 'ΕπεξεργασίαΦόρμας', 'ΠροσθήκηΔεδομένων', 'ΕπεξεργασίαΔεδομένων' ),
- 'FormStart' => array( 'ΕκκίνησηΦόρμας', 'ΠροσθήκηΣελίδας' ),
- 'Forms' => array( 'Φόρμες' ),
- 'RunQuery' => array( 'ΕκτέλεσηΕρωτήματος' ),
- 'Templates' => array( 'Πρότυπα' ),
- 'UploadWindow' => array( 'ΠαράθυροΑνεβάσματος' ),
-);
-
-/** Esperanto (Esperanto) */
-$specialPageAliases['eo'] = array(
- 'CreateCategory' => array( 'Krei_kategorion' ),
- 'CreateClass' => array( 'Krei_klason' ),
- 'CreateForm' => array( 'Krei_formularon' ),
- 'CreateProperty' => array( 'Krei_econ' ),
- 'CreateTemplate' => array( 'Krei_ŝablonon' ),
- 'Forms' => array( 'Formularoj' ),
- 'Templates' => array( 'Ŝablonoj' ),
-);
-
-/** Spanish (español) */
-$specialPageAliases['es'] = array(
- 'CreateCategory' => array( 'CrearCategoría', 'Crear_categoría' ),
- 'Templates' => array( 'Plantillas' ),
-);
-
-/** Basque (euskara) */
-$specialPageAliases['eu'] = array(
- 'CreateCategory' => array( 'KategoriaSortu' ),
- 'CreateTemplate' => array( 'TxantiloiaSortu' ),
- 'Templates' => array( 'Txantiloiak' ),
-);
-
-/** Persian (فارسی) */
-$specialPageAliases['fa'] = array(
- 'CreateCategory' => array( 'ایجاد_رده' ),
- 'CreateClass' => array( 'ایجاد_کلاس' ),
- 'CreateForm' => array( 'ایجاد_فرم' ),
- 'CreateProperty' => array( 'ایجاد_صفت' ),
- 'CreateTemplate' => array( 'ایجاد_الگو' ),
- 'FormEdit' => array( 'ویرایش_داده' ),
- 'FormStart' => array( 'افزودن_صفحه' ),
- 'Forms' => array( 'فرم‌ها' ),
- 'RunQuery' => array( 'اجرای_درخواست' ),
- 'Templates' => array( 'الگوها' ),
- 'UploadWindow' => array( 'پنجره_بارگذاری' ),
-);
-
-/** Finnish (suomi) */
-$specialPageAliases['fi'] = array(
- 'CreateCategory' => array( 'Luo_luokka' ),
- 'CreateClass' => array( 'Luo_semanttinen_tietotyyppi' ),
- 'CreateForm' => array( 'Luo_lomake' ),
- 'CreateProperty' => array( 'Luo_ominaisuus' ),
- 'CreateTemplate' => array( 'Luo_malline' ),
- 'FormEdit' => array( 'Lomakemuokkaus' ),
- 'FormStart' => array( 'Lomakeluonti' ),
- 'Forms' => array( 'Lomakkeet' ),
- 'RunQuery' => array( 'Semanttinen_kysely' ),
- 'Templates' => array( 'Mallineet' ),
-);
-
-/** French (français) */
-$specialPageAliases['fr'] = array(
- 'CreateCategory' => array( 'Créer_catégorie', 'CréerCatégorie' ),
- 'CreateTemplate' => array( 'Créer_modèle', 'CréerModèle' ),
- 'FormEdit' => array( 'AjouterDonnées', 'Ajouter_données' ),
- 'FormStart' => array( 'AjouterPage', 'Ajouter_page' ),
- 'Templates' => array( 'Modèles' ),
-);
-
-/** Franco-Provençal (arpetan) */
-$specialPageAliases['frp'] = array(
- 'CreateCategory' => array( 'Fâre_una_catègorie', 'FâreUnaCatègorie' ),
- 'CreateForm' => array( 'Fâre_un_formulèro', 'FâreUnFormulèro' ),
- 'CreateProperty' => array( 'Dèfenir_una_propriètât', 'DèfenirUnaPropriètât' ),
- 'CreateTemplate' => array( 'Fâre_un_modèlo', 'FâreUnModèlo' ),
- 'FormEdit' => array( 'Changiér_les_balyês', 'ChangiérLesBalyês' ),
- 'FormStart' => array( 'Apondre_una_pâge', 'ApondreUnaPâge' ),
- 'Forms' => array( 'Formulèros' ),
- 'Templates' => array( 'Modèlos' ),
- 'UploadWindow' => array( 'Fenétra_de_tèlèchargement', 'FenétraDeTèlèchargement' ),
-);
-
-/** Gagauz (Gagauz) */
-$specialPageAliases['gag'] = array(
- 'CreateCategory' => array( 'KategoriyaYarat' ),
- 'Templates' => array( 'Şablonnar' ),
-);
-
-/** Galician (galego) */
-$specialPageAliases['gl'] = array(
- 'Forms' => array( 'Formularios' ),
- 'Templates' => array( 'Modelos' ),
-);
-
-/** Swiss German (Alemannisch) */
-$specialPageAliases['gsw'] = array(
- 'CreateCategory' => array( 'Kategori_aalege' ),
- 'CreateClass' => array( 'Klass_erstelle' ),
- 'CreateForm' => array( 'Form_aalege' ),
- 'CreateProperty' => array( 'Eigeschaft_aalege' ),
- 'CreateTemplate' => array( 'Template_aalege' ),
- 'FormEdit' => array( 'Date_bearbeite' ),
- 'FormStart' => array( 'Syte_zuegee' ),
- 'Forms' => array( 'Form' ),
- 'RunQuery' => array( 'Abfroog_ussfüere' ),
- 'Templates' => array( 'Vorlage' ),
- 'UploadWindow' => array( 'Fänschter_zum_Uffelade' ),
-);
-
-/** Upper Sorbian (hornjoserbsce) */
-$specialPageAliases['hsb'] = array(
- 'Forms' => array( 'Formulary' ),
- 'Templates' => array( 'Předłohi' ),
-);
-
-/** Haitian (Kreyòl ayisyen) */
-$specialPageAliases['ht'] = array(
- 'CreateCategory' => array( 'KreyeKategori' ),
- 'CreateClass' => array( 'KreyeKlas' ),
- 'CreateForm' => array( 'KreyeFòmilè' ),
- 'CreateProperty' => array( 'KreyePropriete' ),
- 'CreateTemplate' => array( 'KreyeModèl' ),
- 'FormEdit' => array( 'ModifyeFòmilè', 'AjouteDòne', 'ModifyeDòne' ),
- 'FormStart' => array( 'KòmanseFòmilè', 'AjoutePaj' ),
- 'Forms' => array( 'FomilèYo' ),
- 'RunQuery' => array( 'Enteroje' ),
- 'Templates' => array( 'Modèl' ),
- 'UploadWindow' => array( 'FenètChajman' ),
-);
-
-/** Hungarian (magyar) */
-$specialPageAliases['hu'] = array(
- 'CreateCategory' => array( 'Kategória_készítés' ),
- 'CreateForm' => array( 'Űrlap_készítése' ),
- 'CreateProperty' => array( 'Tulajdonság_készítése' ),
- 'CreateTemplate' => array( 'Sablon_készítése' ),
- 'FormEdit' => array( 'Adat_szerkesztése' ),
- 'FormStart' => array( 'Lap_hozzáadása', 'Oldal_hozzáadása' ),
- 'Forms' => array( 'Űrlapok' ),
- 'Templates' => array( 'Sablonok' ),
- 'UploadWindow' => array( 'Feltöltő_ablak' ),
-);
-
-/** Interlingua (interlingua) */
-$specialPageAliases['ia'] = array(
- 'CreateCategory' => array( 'Crear_categoria' ),
- 'CreateClass' => array( 'Crear_classe' ),
- 'CreateForm' => array( 'Crear_formulario' ),
- 'CreateProperty' => array( 'Crear_proprietate' ),
- 'CreateTemplate' => array( 'Crear_patrono' ),
- 'FormEdit' => array( 'Modificar_datos' ),
- 'FormStart' => array( 'Adder_pagina' ),
- 'Forms' => array( 'Formularios' ),
- 'RunQuery' => array( 'Executar_consulta' ),
- 'Templates' => array( 'Patronos' ),
- 'UploadWindow' => array( 'Cargar_fenestra' ),
-);
-
-/** Indonesian (Bahasa Indonesia) */
-$specialPageAliases['id'] = array(
- 'CreateCategory' => array( 'Buat_kategori', 'BuatKategori' ),
- 'CreateClass' => array( 'Buat_kelas', 'BuatKelas' ),
- 'CreateForm' => array( 'Buat_formulir', 'BuatFormulir' ),
- 'CreateProperty' => array( 'Buat_properti', 'BuatProperti' ),
- 'CreateTemplate' => array( 'Buat_templat', 'BuatTemplat' ),
- 'FormEdit' => array( 'Sunting_data', 'SuntingData' ),
- 'FormStart' => array( 'Tambah_halaman', 'TambahHalaman' ),
- 'Forms' => array( 'Formulir_semantik', 'FormulirSemantik' ),
- 'RunQuery' => array( 'Jalankan_kueri', 'JalankanKueri' ),
- 'Templates' => array( 'Templat' ),
- 'UploadWindow' => array( 'Jendela_pengunggahan', 'JendelaPengunggahan' ),
-);
-
-/** Italian (italiano) */
-$specialPageAliases['it'] = array(
- 'CreateCategory' => array( 'CreaCategoria' ),
- 'CreateClass' => array( 'CreaClasse' ),
- 'CreateForm' => array( 'CreaModulo' ),
- 'CreateProperty' => array( 'CreaProprietà' ),
- 'CreateTemplate' => array( 'CreaTemplate' ),
- 'FormEdit' => array( 'ModificaDati' ),
- 'FormStart' => array( 'AggiungiPagina' ),
- 'Forms' => array( 'Moduli' ),
- 'RunQuery' => array( 'EseguiRicerca' ),
- 'Templates' => array( 'Template' ),
- 'UploadWindow' => array( 'AggiornaFinestra' ),
-);
-
-/** Japanese (日本語) */
-$specialPageAliases['ja'] = array(
- 'CreateCategory' => array( 'カテゴリ作成' ),
- 'CreateClass' => array( 'クラス作成' ),
- 'CreateForm' => array( 'フォーム作成' ),
- 'CreateProperty' => array( 'プロパティ作成' ),
- 'CreateTemplate' => array( 'テンプレート作成' ),
- 'FormEdit' => array( 'データ編集' ),
- 'FormStart' => array( 'ページ追加' ),
- 'Forms' => array( 'フォーム一覧' ),
- 'RunQuery' => array( 'クエリ実行' ),
- 'Templates' => array( 'テンプレート一覧' ),
- 'UploadWindow' => array( 'アップロードウィンドウ' ),
-);
-
-/** Georgian (ქართული) */
-$specialPageAliases['ka'] = array(
- 'CreateCategory' => array( 'კატეგორიის_შექმნა' ),
- 'CreateClass' => array( 'კლასის_შექმნა' ),
- 'CreateTemplate' => array( 'თარგის_შექმნა' ),
- 'Templates' => array( 'თარგები' ),
- 'UploadWindow' => array( 'ატვირთვის_ფანჯარა' ),
-);
-
-/** Khmer (ភាសាខ្មែរ) */
-$specialPageAliases['km'] = array(
- 'CreateCategory' => array( 'បង្កើតចំណាត់ត់ថ្នាក់ក្រុម' ),
- 'CreateForm' => array( 'បង្កើត​ទម្រង់' ),
- 'CreateTemplate' => array( 'បង្កើតទំព័រគំរូ' ),
- 'FormEdit' => array( 'កែប្រែទិន្នន័យ' ),
- 'FormStart' => array( 'បន្ថែមទំព័រ' ),
- 'Forms' => array( 'ទម្រង់​នានា' ),
- 'Templates' => array( 'ទំព័រគំរូ' ),
-);
-
-/** Korean (한국어) */
-$specialPageAliases['ko'] = array(
- 'CreateCategory' => array( '분류추가' ),
- 'CreateClass' => array( '클래스추가' ),
- 'CreateForm' => array( '양식추가' ),
- 'CreateProperty' => array( '속성추가' ),
- 'CreateTemplate' => array( '틀추가' ),
- 'FormEdit' => array( '데이터편집' ),
- 'FormStart' => array( '양식시작', '문서추가' ),
- 'Forms' => array( '양식목록' ),
- 'RunQuery' => array( '쿼리실행' ),
- 'Templates' => array( '틀목록' ),
- 'UploadWindow' => array( '올리기창' ),
-);
-
-/** Colognian (Ripoarisch) */
-$specialPageAliases['ksh'] = array(
- 'CreateCategory' => array( 'Saachjropp aanlääje' ),
- 'CreateForm' => array( 'Fommulaa aanlääje' ),
- 'CreateProperty' => array( 'Eijeschaff aanlääje' ),
- 'CreateTemplate' => array( 'Schabloon aanlääje' ),
- 'FormEdit' => array( 'Date ändere' ),
- 'FormStart' => array( 'Sigg dobei donn' ),
- 'Forms' => array( 'Fommulaare' ),
- 'Templates' => array( 'Schabloone' ),
- 'UploadWindow' => array( 'Finster zum Huhlaade', 'Finster zom Huhlaade' ),
-);
-
-/** Cornish (kernowek) */
-$specialPageAliases['kw'] = array(
- 'CreateCategory' => array( 'GwruthylKlass' ),
- 'CreateClass' => array( 'GwruthylKlassyans' ),
- 'CreateForm' => array( 'GwruthylFurvlen' ),
- 'CreateTemplate' => array( 'GwruthylSkantlyn' ),
- 'Templates' => array( 'Skantlyns' ),
-);
-
-/** Ladino (Ladino) */
-$specialPageAliases['lad'] = array(
- 'Templates' => array( 'Xabblones' ),
-);
-
-/** Luxembourgish (Lëtzebuergesch) */
-$specialPageAliases['lb'] = array(
- 'CreateCategory' => array( 'Kategorie_uleeën' ),
- 'CreateForm' => array( 'Formulaire_uleeën' ),
- 'CreateProperty' => array( 'Eegeschaften_uleeën' ),
- 'CreateTemplate' => array( 'Schabloun_uleeën' ),
- 'FormEdit' => array( 'Daten_änneren' ),
- 'FormStart' => array( 'Säit_derbäisetzen' ),
- 'Forms' => array( 'Formulairen' ),
- 'RunQuery' => array( 'Ufro_ausféieren' ),
- 'Templates' => array( 'Schablounen' ),
- 'UploadWindow' => array( 'Fënster_eroplueden' ),
-);
-
-/** Macedonian (македонски) */
-$specialPageAliases['mk'] = array(
- 'CreateCategory' => array( 'СоздајКатегорија' ),
- 'CreateClass' => array( 'СоздајКласа' ),
- 'CreateForm' => array( 'СоздајФорум' ),
- 'CreateProperty' => array( 'СоздајСвојство' ),
- 'CreateTemplate' => array( 'СоздајШаблон' ),
- 'FormEdit' => array( 'УредиПодаток' ),
- 'FormStart' => array( 'ДодајСтраница' ),
- 'Forms' => array( 'Форми' ),
- 'RunQuery' => array( 'ПуштиБарање' ),
- 'Templates' => array( 'Шаблони' ),
- 'UploadWindow' => array( 'ПрозорецЗаПодигање' ),
-);
-
-/** Malayalam (മലയാളം) */
-$specialPageAliases['ml'] = array(
- 'CreateCategory' => array( 'വർഗ്ഗസൃഷ്ടി' ),
- 'CreateForm' => array( 'ഫോംസൃഷ്ടി' ),
- 'CreateTemplate' => array( 'ഫലകസൃഷ്ടി' ),
- 'FormEdit' => array( 'വിവരങ്ങൾതിരുത്തുക' ),
- 'FormStart' => array( 'താൾചേർക്കുക' ),
- 'Forms' => array( 'ഫോമുകൾ' ),
- 'Templates' => array( 'ഫലകങ്ങൾ' ),
- 'UploadWindow' => array( 'അപ്‌ലോഡ്ജാലകം' ),
-);
-
-/** Marathi (मराठी) */
-$specialPageAliases['mr'] = array(
- 'CreateCategory' => array( 'वर्गतयारकरा' ),
- 'CreateForm' => array( 'फॉर्मतयारकरा' ),
- 'CreateProperty' => array( 'वैशिष्ट्येतयारकरा' ),
- 'CreateTemplate' => array( 'साचेतयारकरा' ),
- 'FormEdit' => array( 'विदासंपादा' ),
- 'FormStart' => array( 'पानजोडा' ),
- 'Forms' => array( 'फॉर्म्स' ),
- 'Templates' => array( 'साचे' ),
- 'UploadWindow' => array( 'चढवाखिडकी' ),
-);
-
-/** Maltese (Malti) */
-$specialPageAliases['mt'] = array(
- 'CreateCategory' => array( 'OħloqKategorija' ),
- 'FormEdit' => array( 'ŻidDati' ),
- 'FormStart' => array( 'ŻidPaġna' ),
- 'Templates' => array( 'Mudelli' ),
-);
-
-/** Erzya (эрзянь) */
-$specialPageAliases['myv'] = array(
- 'Forms' => array( 'Парцунт' ),
- 'Templates' => array( 'ЛопаПарцунт' ),
-);
-
-/** Norwegian Bokmål (norsk bokmål) */
-$specialPageAliases['nb'] = array(
- 'CreateCategory' => array( 'Opprett_kategori' ),
- 'CreateClass' => array( 'Opprett_klasse' ),
- 'CreateForm' => array( 'Opprett_skjema' ),
- 'CreateProperty' => array( 'Opprett_egenskap' ),
- 'CreateTemplate' => array( 'Opprett_mal' ),
- 'FormEdit' => array( 'Rediger_data', 'Legg_til_data' ),
- 'FormStart' => array( 'Legg_til_side' ),
- 'Forms' => array( 'Skjemaer' ),
- 'RunQuery' => array( 'Kjør_spørring' ),
- 'Templates' => array( 'Maler' ),
- 'UploadWindow' => array( 'Opplastingsvindu' ),
-);
-
-/** Low Saxon (Netherlands) (Nedersaksies) */
-$specialPageAliases['nds-nl'] = array(
- 'CreateCategory' => array( 'Kategorie_anmaken' ),
- 'CreateClass' => array( 'Klasse_anmaken' ),
- 'CreateForm' => array( 'Formulier_anmaken' ),
- 'CreateProperty' => array( 'Eigenschap_anmaken' ),
- 'CreateTemplate' => array( 'Mal_anmaken' ),
- 'FormEdit' => array( 'Gegevens_bewarken' ),
- 'FormStart' => array( 'Zied_derbie_doon' ),
- 'Forms' => array( 'Formulieren' ),
- 'RunQuery' => array( 'Zeukopdrachte_uutvoeren' ),
- 'Templates' => array( 'Mallen' ),
- 'UploadWindow' => array( 'Bestaandenscharm' ),
-);
-
-/** Dutch (Nederlands) */
-$specialPageAliases['nl'] = array(
- 'CreateCategory' => array( 'CategorieAanmaken' ),
- 'CreateClass' => array( 'KlasseAanmaken' ),
- 'CreateForm' => array( 'FormulierAanmaken' ),
- 'CreateProperty' => array( 'EigenschapAanmaken' ),
- 'CreateTemplate' => array( 'SjabloonAanmaken' ),
- 'FormEdit' => array( 'GegevensBewerken', 'GegevensToevoegen' ),
- 'FormStart' => array( 'PaginaToevoegen' ),
- 'Forms' => array( 'Formulieren' ),
- 'RunQuery' => array( 'ZoekopdrachtUitvoeren' ),
- 'Templates' => array( 'Sjablonen' ),
- 'UploadWindow' => array( 'Uploadscherm' ),
-);
-
-/** Occitan (occitan) */
-$specialPageAliases['oc'] = array(
- 'CreateCategory' => array( 'Crear una categoria', 'CrearCategoria' ),
- 'CreateForm' => array( 'Crear un formulari', 'CrearFormulari' ),
- 'CreateProperty' => array( 'Crear una proprietat', 'CrearProprietat' ),
- 'CreateTemplate' => array( 'Crear un modèl', 'CrearModèl' ),
- 'FormStart' => array( 'Apondre una pagina', 'ApondrePagina' ),
- 'Forms' => array( 'Formularis' ),
- 'Templates' => array( 'Modèls' ),
-);
-
-/** Oriya (ଓଡ଼ିଆ) */
-$specialPageAliases['or'] = array(
- 'CreateCategory' => array( 'ଶ୍ରେଣୀ_ତିଆରି_କରନ୍ତୁ' ),
- 'CreateForm' => array( 'ଫରମ_ତିଆରି_କରନ୍ତୁ' ),
- 'CreateTemplate' => array( 'ଛାଞ୍ଚ_ତିଆରି_କରନ୍ତୁ' ),
- 'FormEdit' => array( 'ଫରମ_ବଦଳାନ୍ତୁ' ),
- 'FormStart' => array( 'ଫରମ_ଆରମ୍ଭ_କରନ୍ତୁ' ),
- 'Forms' => array( 'ଫରମ' ),
- 'Templates' => array( 'ଛାଞ୍ଚ' ),
- 'UploadWindow' => array( 'ଉଇଣ୍ଡୋ_ଅପଲୋଡ଼_କରନ୍ତୁ' ),
-);
-
-/** Punjabi (ਪੰਜਾਬੀ) */
-$specialPageAliases['pa'] = array(
- 'CreateCategory' => array( 'ਸ਼੍ਰੇਣੀ_ਬਣਾਓ' ),
- 'CreateTemplate' => array( 'ਸਾਂਚਾ_ਬਣਾਓ' ),
- 'Templates' => array( 'ਫਰਮੇ' ),
-);
-
-/** Polish (polski) */
-$specialPageAliases['pl'] = array(
- 'CreateCategory' => array( 'UtwórzKategorię' ),
- 'CreateClass' => array( 'UtwórzKlasę' ),
- 'CreateForm' => array( 'UtwórzFormularz' ),
- 'CreateProperty' => array( 'UtwórzWłaściwość' ),
- 'CreateTemplate' => array( 'UtwórzSzablon' ),
- 'Forms' => array( 'Formularze' ),
- 'Templates' => array( 'Szablony' ),
-);
-
-/** Pashto (پښتو) */
-$specialPageAliases['ps'] = array(
- 'CreateCategory' => array( 'وېشنيزه جوړول' ),
- 'CreateProperty' => array( 'د جوړولو ځانتيا' ),
- 'CreateTemplate' => array( 'کينډۍ جوړول' ),
- 'FormStart' => array( 'مخ ګډول' ),
- 'Templates' => array( 'کينډۍ' ),
-);
-
-/** Portuguese (português) */
-$specialPageAliases['pt'] = array(
- 'CreateCategory' => array( 'Criar_categoria' ),
- 'CreateForm' => array( 'Criar_formulário' ),
- 'CreateProperty' => array( 'Criar_propriedade' ),
- 'CreateTemplate' => array( 'Criar_modelo' ),
- 'FormEdit' => array( 'Editar_dados' ),
- 'FormStart' => array( 'Adicionar_página' ),
- 'Forms' => array( 'Formulários' ),
- 'Templates' => array( 'Modelos' ),
- 'UploadWindow' => array( 'Janela_de_carregamento' ),
-);
-
-/** Brazilian Portuguese (português do Brasil) */
-$specialPageAliases['pt-br'] = array(
- 'Forms' => array( 'Formulários' ),
- 'Templates' => array( 'Predefinições' ),
- 'UploadWindow' => array( 'Tela_de_envio' ),
-);
-
-/** Romanian (română) */
-$specialPageAliases['ro'] = array(
- 'Templates' => array( 'Formate' ),
-);
-
-/** Russian (русский) */
-$specialPageAliases['ru'] = array(
- 'CreateCategory' => array( 'Создать_категорию' ),
- 'CreateTemplate' => array( 'Создать_шаблон' ),
- 'Templates' => array( 'Шаблоны' ),
-);
-
-/** Sicilian (sicilianu) */
-$specialPageAliases['scn'] = array(
- 'CreateCategory' => array( 'CreaCategoria' ),
- 'CreateClass' => array( 'CreaClasse' ),
- 'CreateForm' => array( 'CreaModulo' ),
- 'CreateProperty' => array( 'CreaProprietà' ),
- 'CreateTemplate' => array( 'CreaTemplate' ),
- 'FormEdit' => array( 'ModificaDati' ),
- 'FormStart' => array( 'AggiungiPagina' ),
- 'Forms' => array( 'Moduli' ),
- 'RunQuery' => array( 'EseguiRicerca' ),
- 'Templates' => array( 'Template' ),
- 'UploadWindow' => array( 'AggiornaFinestra' ),
-);
-
-/** Slovak (slovenčina) */
-$specialPageAliases['sk'] = array(
- 'CreateCategory' => array( 'VytvoriťKategóriu' ),
- 'CreateForm' => array( 'VytvoriťFormulár' ),
- 'CreateProperty' => array( 'VytvoriťVlastnosť' ),
- 'CreateTemplate' => array( 'VytvoriťŠablónu' ),
- 'FormEdit' => array( 'UpraviťDáta' ),
- 'FormStart' => array( 'PridaťStránku' ),
- 'Forms' => array( 'Formuláre' ),
- 'Templates' => array( 'Šablóny' ),
- 'UploadWindow' => array( 'NahrávacieOkno' ),
-);
-
-/** Albanian (shqip) */
-$specialPageAliases['sq'] = array(
- 'Forms' => array( 'Format' ),
- 'Templates' => array( 'Stampat' ),
-);
-
-/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
-$specialPageAliases['sr-ec'] = array(
- 'CreateCategory' => array( 'НаправиКатегорију' ),
- 'CreateClass' => array( 'Направи_класу' ),
- 'CreateForm' => array( 'Направи_образац' ),
- 'CreateProperty' => array( 'Направи_својство' ),
- 'CreateTemplate' => array( 'Направи_шаблон' ),
- 'FormEdit' => array( 'Уреди_образац' ),
- 'FormStart' => array( 'ДодајСтраницу', 'Додај_страницу' ),
- 'Forms' => array( 'Обрасци' ),
- 'Templates' => array( 'Шаблони' ),
-);
-
-/** Swedish (svenska) */
-$specialPageAliases['sv'] = array(
- 'CreateCategory' => array( 'Skapa_kategori' ),
- 'Templates' => array( 'Mallar' ),
-);
-
-/** Swahili (Kiswahili) */
-$specialPageAliases['sw'] = array(
- 'CreateCategory' => array( 'UndaJamii' ),
- 'CreateForm' => array( 'UndaFomu' ),
- 'CreateTemplate' => array( 'UndaKigezo' ),
- 'FormEdit' => array( 'HaririData' ),
- 'FormStart' => array( 'WekaKurasa' ),
- 'Forms' => array( 'Fomu' ),
- 'Templates' => array( 'Vigezo' ),
- 'UploadWindow' => array( 'DirishalaKupakizia' ),
-);
-
-/** Thai (ไทย) */
-$specialPageAliases['th'] = array(
- 'CreateCategory' => array( 'สร้างหมวดหมู่' ),
- 'CreateClass' => array( 'สร้างคลาส' ),
- 'CreateForm' => array( 'สร้างแบบฟอร์ม' ),
- 'CreateProperty' => array( 'สร้างคุณสมบัติ' ),
- 'CreateTemplate' => array( 'สร้างแม่แบบ' ),
- 'FormEdit' => array( 'แก้ไขแบบฟอร์ม' ),
- 'FormStart' => array( 'เริ่มแบบฟอร์ม' ),
- 'Forms' => array( 'แบบฟอร์ม' ),
- 'Templates' => array( 'แม่แบบ' ),
- 'UploadWindow' => array( 'หน้าต่างอัปโหลด' ),
-);
-
-/** Tagalog (Tagalog) */
-$specialPageAliases['tl'] = array(
- 'CreateCategory' => array( 'Likhain_ang_kaurian' ),
- 'CreateForm' => array( 'Likhain_ang_pormularyo' ),
- 'CreateProperty' => array( 'Likhain_ang_pag-aari' ),
- 'CreateTemplate' => array( 'Likhain_ang_suleras' ),
- 'FormEdit' => array( 'Baguhin_ang_dato' ),
- 'FormStart' => array( 'Idagdag_ang_pahina' ),
- 'Forms' => array( 'Mga_pormularyo' ),
- 'Templates' => array( 'Mga_suleras' ),
- 'UploadWindow' => array( 'Bintana_ng_pagkarga' ),
-);
-
-/** Turkish (Türkçe) */
-$specialPageAliases['tr'] = array(
- 'CreateCategory' => array( 'KategoriOluştur', 'UlamOluştur' ),
- 'CreateClass' => array( 'SınıfOluştur' ),
- 'CreateForm' => array( 'FormOluştur' ),
- 'CreateProperty' => array( 'ÖzellikOluştur' ),
- 'CreateTemplate' => array( 'ŞablonOluştur' ),
- 'FormEdit' => array( 'VeriDüzenle', 'VeriDeğiştir' ),
- 'FormStart' => array( 'SayfaEkle' ),
- 'Forms' => array( 'Formlar' ),
- 'RunQuery' => array( 'SorguYürüt' ),
- 'Templates' => array( 'Şablonlar' ),
- 'UploadWindow' => array( 'YüklemePenceresi' ),
-);
-
-/** Tatar (Cyrillic script) (татарча) */
-$specialPageAliases['tt-cyrl'] = array(
- 'CreateTemplate' => array( 'Үрнәкне_үзгәртү' ),
- 'Templates' => array( 'Үрнәкләр' ),
-);
-
-/** Ukrainian (українська) */
-$specialPageAliases['uk'] = array(
- 'CreateCategory' => array( 'Створити_категорію' ),
- 'CreateClass' => array( 'Створити_клас' ),
- 'CreateForm' => array( 'Створити_форму' ),
- 'CreateProperty' => array( 'Створити_властивість' ),
- 'CreateTemplate' => array( 'Створити_шаблон' ),
- 'Forms' => array( 'Форми' ),
- 'Templates' => array( 'Шаблони' ),
-);
-
-/** vèneto (vèneto) */
-$specialPageAliases['vec'] = array(
- 'CreateTemplate' => array( 'CreaModèl' ),
- 'FormEdit' => array( 'ZontaDati' ),
- 'FormStart' => array( 'ZontaPagina' ),
- 'Templates' => array( 'Modèi' ),
- 'UploadWindow' => array( 'AjornaFenestra' ),
-);
-
-/** Vietnamese (Tiếng Việt) */
-$specialPageAliases['vi'] = array(
- 'CreateCategory' => array( 'Tạo_thể_loại' ),
- 'CreateClass' => array( 'Tạo_lớp' ),
- 'CreateForm' => array( 'Tạo_biểu_mẫu' ),
- 'CreateProperty' => array( 'Tạo_thuộc_tính' ),
- 'CreateTemplate' => array( 'Tạo_bản_mẫu' ),
- 'FormEdit' => array( 'Sửa_biểu_mẫu', 'Thêm_dữ_liệu', 'Sửa_dữ_liệu' ),
- 'Forms' => array( 'Biểu_mẫu' ),
- 'UploadWindow' => array( 'Cửa_sổ_tải_lên' ),
-);
-
-/** Simplified Chinese (中文(简体)‎) */
-$specialPageAliases['zh-hans'] = array(
- 'CreateCategory' => array( '创建分类' ),
- 'CreateClass' => array( '创建类' ),
- 'CreateForm' => array( '创建表格' ),
- 'CreateProperty' => array( '创建属性' ),
- 'CreateTemplate' => array( '创建模板' ),
- 'FormEdit' => array( '编辑表格', '添加数据', '编辑数据' ),
- 'FormStart' => array( '表格起始', '添加页面' ),
- 'Forms' => array( '表格' ),
- 'RunQuery' => array( '执行查询' ),
- 'Templates' => array( '模板' ),
- 'UploadWindow' => array( '上传窗口' ),
-);
-
-/** Traditional Chinese (中文(繁體)‎) */
-$specialPageAliases['zh-hant'] = array(
- 'UploadWindow' => array( '上載視窗' ),
-); \ No newline at end of file
diff --git a/SemanticForms/languages/SF_Language.php b/SemanticForms/languages/SF_Language.php
deleted file mode 100644
index cc6d4230..00000000
--- a/SemanticForms/languages/SF_Language.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * Base class for all language classes.
- *
- * @ingroup SFLanguage
- */
-abstract class SF_Language {
-
- // Array for the names of special properties - all messages are
- // stored in SF_Messages.php.
- protected $m_SpecialProperties;
-
- // By default, every language has English-language aliases for
- // special properties.
- protected $m_SpecialPropertyAliases = array(
- 'Has default form' => SF_SP_HAS_DEFAULT_FORM,
- 'Has alternate form' => SF_SP_HAS_ALTERNATE_FORM,
- 'Creates pages with form' => SF_SP_CREATES_PAGES_WITH_FORM,
- );
-
- /**
- * Returns the labels for the special properties.
- */
- function getPropertyLabels() {
- return $this->m_SpecialProperties;
- }
-
- /**
- * Aliases for special properties, if any.
- */
- function getPropertyAliases() {
- return $this->m_SpecialPropertyAliases;
- }
-
-}
diff --git a/SemanticForms/languages/SF_LanguageAr.php b/SemanticForms/languages/SF_LanguageAr.php
deleted file mode 100644
index c9457ea9..00000000
--- a/SemanticForms/languages/SF_LanguageAr.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Meno25
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageAr extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'لديه استمارة افتراضية',// Has default form
- SF_SP_HAS_ALTERNATE_FORM => 'لديه استمارة بديلة'// Has alternate form
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageArz.php b/SemanticForms/languages/SF_LanguageArz.php
deleted file mode 100644
index 7607be6b..00000000
--- a/SemanticForms/languages/SF_LanguageArz.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Meno25
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageArz extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'لديه استمارة افتراضية',// Has default form
- SF_SP_HAS_ALTERNATE_FORM => 'لديه استمارة بديلة'// Has alternate form
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageCa.php b/SemanticForms/languages/SF_LanguageCa.php
deleted file mode 100644
index 47e7ff5f..00000000
--- a/SemanticForms/languages/SF_LanguageCa.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageCa extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Fa servir el formulari per defecte', // Has default form
- SF_SP_HAS_ALTERNATE_FORM => 'Fa servir el formulari alternatiu'// Has alternate form
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageDe.php b/SemanticForms/languages/SF_LanguageDe.php
deleted file mode 100644
index 68d9287c..00000000
--- a/SemanticForms/languages/SF_LanguageDe.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/**
- * @author Dominik Rodler
- * @author Karsten Hoffmeyer (kghbln)
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageDe extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Hat Standardformular',
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'Seite Hat Standardformular',
- SF_SP_HAS_ALTERNATE_FORM => 'Hat Alternativformular',
- SF_SP_CREATES_PAGES_WITH_FORM => 'Erstellt Seiten mit Formular',
- SF_SP_HAS_FIELD_LABEL_FORMAT => 'Hat Feldbezeichnungsformat',
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageDe_formal.php b/SemanticForms/languages/SF_LanguageDe_formal.php
deleted file mode 100644
index d88d8c34..00000000
--- a/SemanticForms/languages/SF_LanguageDe_formal.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Dominik Rodler
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageDe_formal extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Hat Standardformular',
- SF_SP_HAS_ALTERNATE_FORM => 'Hat Alternativformular'
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageEl.php b/SemanticForms/languages/SF_LanguageEl.php
deleted file mode 100644
index ba9082a5..00000000
--- a/SemanticForms/languages/SF_LanguageEl.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageEl extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Έχει προεπιλεγμένη φόρμα', // Has default form
- SF_SP_HAS_ALTERNATE_FORM => 'Έχει εναλλακτική φόρμα', // Has alternate form
- SF_SP_CREATES_PAGES_WITH_FORM => 'Δημιουργεί σελίδες με φόρμα', // Creates pages with form
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'Η σελίδα έχει προεπιλεγμένη φόρμα', // Page has default form
- SF_SP_HAS_FIELD_LABEL_FORMAT => 'Έχει μορφή ετικέτας πεδίου', //Has field label format
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageEn.php b/SemanticForms/languages/SF_LanguageEn.php
deleted file mode 100644
index f6f8eb94..00000000
--- a/SemanticForms/languages/SF_LanguageEn.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageEn extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Has default form',
- SF_SP_HAS_ALTERNATE_FORM => 'Has alternate form',
- SF_SP_CREATES_PAGES_WITH_FORM => 'Creates pages with form',
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'Page has default form',
- SF_SP_HAS_FIELD_LABEL_FORMAT => 'Has field label format',
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageEs.php b/SemanticForms/languages/SF_LanguageEs.php
deleted file mode 100644
index 9fdd26c9..00000000
--- a/SemanticForms/languages/SF_LanguageEs.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageEs extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Usa el formulario por defecto', // Has default form
- SF_SP_HAS_ALTERNATE_FORM => 'Usa el formulario alternativo'// Has alternate form
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageFa.php b/SemanticForms/languages/SF_LanguageFa.php
deleted file mode 100644
index 2a188238..00000000
--- a/SemanticForms/languages/SF_LanguageFa.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Yaron Koren (Translation:Ghassem Tofighi Email:[MyFamily]@gmail.com, HomePage:http://ght.ir)
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageFa extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'فرم پیش‌فرض دارد',// Has default form
- SF_SP_HAS_ALTERNATE_FORM => 'فرم مشابه دارد'// Has alternate form
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageFi.php b/SemanticForms/languages/SF_LanguageFi.php
deleted file mode 100644
index f84c269d..00000000
--- a/SemanticForms/languages/SF_LanguageFi.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * @author Niklas Laxström
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageFi extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Oletuslomake',
- SF_SP_HAS_ALTERNATE_FORM => 'Vaihtoehtoinen lomake',
- SF_SP_CREATES_PAGES_WITH_FORM => 'Sivunluontilomake',
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'Sivun oletuslomake',
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageFr.php b/SemanticForms/languages/SF_LanguageFr.php
deleted file mode 100644
index 49de82a7..00000000
--- a/SemanticForms/languages/SF_LanguageFr.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageFr extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Utilise le formulaire',
- SF_SP_HAS_ALTERNATE_FORM => 'Utilise le formulaire alternatif'
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageHe.php b/SemanticForms/languages/SF_LanguageHe.php
deleted file mode 100644
index dfb7bdbb..00000000
--- a/SemanticForms/languages/SF_LanguageHe.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageHe extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'משתמש בטופס',
- SF_SP_HAS_ALTERNATE_FORM => 'משתמש בטופס'
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageId.php b/SemanticForms/languages/SF_LanguageId.php
deleted file mode 100644
index 9f2edbb1..00000000
--- a/SemanticForms/languages/SF_LanguageId.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-/**
- * @author Ivan Lanin
- */
-
-class SF_LanguageId extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Memiliki formulir bawaan',
- SF_SP_HAS_ALTERNATE_FORM => 'Memiliki formulir alternatif',
- SF_SP_CREATES_PAGES_WITH_FORM => 'Membuat halaman dengan formulir',
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'Halaman memiliki formulir bawaan',
- SF_SP_HAS_FIELD_LABEL_FORMAT => 'Memiliki format label bidang',
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageIt.php b/SemanticForms/languages/SF_LanguageIt.php
deleted file mode 100644
index 59f3ff31..00000000
--- a/SemanticForms/languages/SF_LanguageIt.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * @author Melos
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageIt extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Usa il modulo predefinito',
- SF_SP_HAS_ALTERNATE_FORM => 'Usa il modulo alternativo',
- SF_SP_CREATES_PAGES_WITH_FORM => 'Crea pagine con modulo',
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'La pagina ha il modulo predefinito',
- SF_SP_HAS_FIELD_LABEL_FORMAT => 'Usa il formato del campo etichetta',
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageNl.php b/SemanticForms/languages/SF_LanguageNl.php
deleted file mode 100644
index 19884267..00000000
--- a/SemanticForms/languages/SF_LanguageNl.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * @author Siebrand Mazeland
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageNl extends SF_Language {
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Heeft standaard formulier',
- SF_SP_HAS_ALTERNATE_FORM => 'Heeft alternatief formulier',
- SF_SP_CREATES_PAGES_WITH_FORM => 'Maakt pagina\'s aan via formulier',
- SF_SP_PAGE_HAS_DEFAULT_FORM => 'Pagina heeft standaard formulier',
- SF_SP_HAS_FIELD_LABEL_FORMAT => 'Heeft veldlabelopmaak',
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageNo.php b/SemanticForms/languages/SF_LanguageNo.php
deleted file mode 100644
index 7d6ef230..00000000
--- a/SemanticForms/languages/SF_LanguageNo.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * @author Jon Harald Søby
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageNo extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => 'Har standardskjema',
- SF_SP_HAS_ALTERNATE_FORM => 'Har alternativt skjema'
- );
-
-}
diff --git a/SemanticForms/languages/SF_LanguageZh_cn.php b/SemanticForms/languages/SF_LanguageZh_cn.php
deleted file mode 100644
index 5b4a2a01..00000000
--- a/SemanticForms/languages/SF_LanguageZh_cn.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * @author: Yaron Koren 翻译:张致信 本档系以电子字典译自繁体版,请自行修订(Translation: Roc Michael Email:roc.no1@gmail.com. This file is translated from Tradition Chinese by using electronic dictionary. Please correct the file by yourself.)
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageZh_cn extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => '预设表单', // (Has default form)
- SF_SP_HAS_ALTERNATE_FORM => '代用表单' // (Has alternate form)
- );
-
-}
-
-$m_SpecialPropertyAliases['设有表单'] = SF_SP_HAS_DEFAULT_FORM; // (Has default form) //Adding the item "Has alternate form", this item will not be suitable for translating into “设有表单". It has changed to use “预设表单".
-
diff --git a/SemanticForms/languages/SF_LanguageZh_tw.php b/SemanticForms/languages/SF_LanguageZh_tw.php
deleted file mode 100644
index 7927c1fa..00000000
--- a/SemanticForms/languages/SF_LanguageZh_tw.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * @author Yaron Koren 翻譯:張致信(Translation: Roc Michael Email:roc.no1@gmail.com)
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFLanguage
- */
-class SF_LanguageZh_tw extends SF_Language {
-
- /* private */ var $m_SpecialProperties = array(
- // always start upper-case
- SF_SP_HAS_DEFAULT_FORM => '預設表單', // (Has default form)
- SF_SP_HAS_ALTERNATE_FORM => '代用表單' // (Has alternate form)
- );
-
-}
-
-$m_SpecialPropertyAliases ['設有表單'] = SF_SP_HAS_DEFAULT_FORM; // (Has default form) //Adding the item "Has alternate form", this item will not be suitable for translating into “設有表單”. It has changed to use “預設表單”.
-
diff --git a/SemanticForms/languages/SF_Magic.php b/SemanticForms/languages/SF_Magic.php
deleted file mode 100644
index c57681c0..00000000
--- a/SemanticForms/languages/SF_Magic.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup SF
- */
-
-$magicWords = array();
-
-/** English (English) */
-$magicWords['en'] = array(
- 'forminput' => array( 0, 'forminput' ),
- 'formlink' => array( 0, 'formlink' ),
- 'queryformlink' => array( 0, 'queryformlink' ),
- 'arraymap' => array( 0, 'arraymap' ),
- 'arraymaptemplate' => array( 0, 'arraymaptemplate' ),
- 'autoedit' => array( 0, 'autoedit' ),
-);
-
-/** Arabic (العربية) */
-$magicWords['ar'] = array(
- 'forminput' => array( 0, 'مدخل_النموذج' ),
- 'formlink' => array( 0, 'وصلة_النموذج' ),
- 'queryformlink' => array( 0, 'وصلة_نموذج_استعلام' ),
- 'arraymap' => array( 0, 'خريطة_المصفوفة' ),
- 'arraymaptemplate' => array( 0, 'قالب_خريطة_المصفوفة' ),
- 'autoedit' => array( 0, 'تعديل_تلقائي' ),
-);
-
-/** Egyptian Spoken Arabic (مصرى) */
-$magicWords['arz'] = array(
- 'forminput' => array( 0, 'مدخل_النموذج', 'forminput' ),
- 'formlink' => array( 0, 'وصلة_النموذج', 'formlink' ),
- 'arraymap' => array( 0, 'خريطة_المصفوفة', 'arraymap' ),
- 'arraymaptemplate' => array( 0, 'قالب_خريطة_المصفوفة', 'arraymaptemplate' ),
-);
-
-/** German (Deutsch) */
-$magicWords['de'] = array(
- 'forminput' => array( 0, 'formulareingabe' ),
- 'formlink' => array( 0, 'formularlink', 'formularverweis' ),
- 'queryformlink' => array( 0, 'abfrageformularlink', 'abfrageformularverweis' ),
- 'arraymap' => array( 0, 'werteanordnung' ),
- 'arraymaptemplate' => array( 0, 'werteanordnungsvorlage' ),
- 'autoedit' => array( 0, 'autobearbeitung' ),
-);
-
-/** Greek (Ελληνικά) */
-$magicWords['el'] = array(
- 'forminput' => array( 0, 'είσοδοςφόρμας' ),
- 'formlink' => array( 0, 'σύνδεσμοςφόρμας' ),
- 'queryformlink' => array( 0, 'σύνδεσμοςφόρμαςερωτήματος' ),
- 'arraymap' => array( 0, 'χάρτηςπίνακα' ),
- 'arraymaptemplate' => array( 0, 'πρότυποχάρτηπίνακα' ),
- 'autoedit' => array( 0, 'αυτόματηεπεξεργασία' ),
-);
-
-/** Japanese (日本語) */
-$magicWords['ja'] = array(
- 'forminput' => array( 0, '入力フォーム' ),
- 'formlink' => array( 0, 'リンクフォーム' ),
- 'arraymap' => array( 0, '配列マップ' ),
- 'arraymaptemplate' => array( 0, '配列マップテンプレート' ),
-);
-
-/** Georgian (ქართული) */
-$magicWords['ka'] = array(
- 'autoedit' => array( 0, 'ავტო_რედაქტირება' ),
-);
-
-/** Korean (한국어) */
-$magicWords['ko'] = array(
- 'forminput' => array( 0, '양식입력' ),
- 'formlink' => array( 0, '양식링크' ),
- 'queryformlink' => array( 0, '쿼리양식링크' ),
- 'arraymap' => array( 0, '배열지도' ),
- 'arraymaptemplate' => array( 0, '배열지도틀' ),
- 'autoedit' => array( 0, '자동편집' ),
-);
-
-/** Macedonian (македонски) */
-$magicWords['mk'] = array(
- 'forminput' => array( 0, 'вносзаобразец' ),
- 'formlink' => array( 0, 'врсказаобразец' ),
- 'queryformlink' => array( 0, 'барањезаврсказаобразец' ),
- 'arraymap' => array( 0, 'картананиза' ),
- 'arraymaptemplate' => array( 0, 'шаблоннакартазаниза' ),
- 'autoedit' => array( 0, 'автоуреди' ),
-);
-
-/** Marathi (मराठी) */
-$magicWords['mr'] = array(
- 'arraymap' => array( 0, 'नकाशेरचना' ),
- 'arraymaptemplate' => array( 0, 'नकाशेसाचारचना' ),
-);
-
-/** Low Saxon (Netherlands) (Nedersaksies) */
-$magicWords['nds-nl'] = array(
- 'forminput' => array( 0, 'formulierinvoer' ),
- 'formlink' => array( 0, 'formulierverwiezing' ),
- 'arraymaptemplate' => array( 0, 'arraymapmal' ),
-);
-
-/** Dutch (Nederlands) */
-$magicWords['nl'] = array(
- 'forminput' => array( 0, 'formulierinvoer' ),
- 'formlink' => array( 0, 'formulierkoppeing', 'formulierverwijzing' ),
- 'queryformlink' => array( 0, 'zoekformulierkoppeling', 'zoekformulierverwijzing' ),
- 'arraymap' => array( 0, 'arraymapping' ),
- 'arraymaptemplate' => array( 0, 'arraymapsjabloon' ),
- 'autoedit' => array( 0, 'autobewerken' ),
-);
-
-/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
-$magicWords['sr-ec'] = array(
- 'forminput' => array( 0, 'формирајулаз', 'формирај_улаз' ),
- 'formlink' => array( 0, 'формирај_везу' ),
-);
-
-/** Serbian (Latin script) (srpski (latinica)‎) */
-$magicWords['sr-el'] = array(
- 'forminput' => array( 0, 'obrazuj_ulaz' ),
- 'formlink' => array( 0, 'obrazuj_vezu' ),
- 'arraymap' => array( 0, 'niz_mape' ),
- 'arraymaptemplate' => array( 0, 'šablon_niza_mape' ),
-); \ No newline at end of file
diff --git a/SemanticForms/languages/SF_Messages.php b/SemanticForms/languages/SF_Messages.php
deleted file mode 100644
index fc65d35d..00000000
--- a/SemanticForms/languages/SF_Messages.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * This is a backwards-compatibility shim, generated by:
- * https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php
- *
- * Beginning with MediaWiki 1.23, translation strings are stored in json files,
- * and the EXTENSION.i18n.php file only exists to provide compatibility with
- * older releases of MediaWiki. For more information about this migration, see:
- * https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format
- *
- * This shim maintains compatibility back to MediaWiki 1.17.
- */
-$messages = array();
-$GLOBALS['wgHooks']['LocalisationCacheRecache'][] = function ( $cache, $code, &$cachedData ) {
- $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
- foreach ( $codeSequence as $csCode ) {
- $fileName = __DIR__ . "/../i18n/$csCode.json";
- if ( is_readable( $fileName ) ) {
- $data = FormatJson::decode( file_get_contents( $fileName ), true );
- foreach ( array_keys( $data ) as $key ) {
- if ( $key === '' || $key[0] === '@' ) {
- unset( $data[$key] );
- }
- }
- $cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
- }
-
- $cachedData['deps'][] = new FileDependency( $fileName );
- }
- return true;
-};
diff --git a/SemanticForms/languages/SF_Namespaces.php b/SemanticForms/languages/SF_Namespaces.php
deleted file mode 100644
index c98c6f35..00000000
--- a/SemanticForms/languages/SF_Namespaces.php
+++ /dev/null
@@ -1,137 +0,0 @@
-<?php
-
-/**
- * Namespace internationalization for the Semantic Forms extension.
- *
- * @since 2.4.1
- *
- * @file SF_Namespaces.php
- * @ingroup SemanticForms
- *
- * @licence GNU GPL v2+
- * @author Jeroen De Dauw < jeroendedauw@gmail.com >
- * @author Yaron Koren
- */
-
-$namespaceNames = array();
-
-/**
- * @author Meno25
- */
-$namespaceNames['ar'] = array(
- SF_NS_FORM => 'استمارة',
- SF_NS_FORM_TALK => 'نقاش_الاستمارة'
-);
-
-/**
- * @author Meno25
- */
-$namespaceNames['arz'] = array(
- SF_NS_FORM => 'استمارة',
- SF_NS_FORM_TALK => 'نقاش_الاستمارة'
-);
-
-$namespaceNames['ca'] = array(
- SF_NS_FORM => 'Formulari',
- SF_NS_FORM_TALK => 'Discussió_formulari'
-);
-
-/**
- * @author Dominik Rodler
- */
-$namespaceNames['de'] = array(
- SF_NS_FORM => 'Formular',
- SF_NS_FORM_TALK => 'Formular_Diskussion'
-);
-
-/**
- * @author Protnet
- */
-$namespaceNames['el'] = array(
- SF_NS_FORM => 'Φόρμα',
- SF_NS_FORM_TALK => 'Συζήτηση_φόρμας'
-);
-
-$namespaceNames['en'] = array(
- SF_NS_FORM => 'Form',
- SF_NS_FORM_TALK => 'Form_talk',
-);
-
-$namespaceNames['es'] = array(
- SF_NS_FORM => 'Formulario',
- SF_NS_FORM_TALK => 'Discusión_formulario'
-);
-
-/**
- * @author Ghassem Tofighi
- */
-$namespaceNames['fa'] = array(
- SF_NS_FORM => 'فرم',
- SF_NS_FORM_TALK => 'بحث_فرم'
-);
-
-/**
- * @author Niklas Laxström
- */
-$namespaceNames['fi'] = array(
- SF_NS_FORM => 'Lomake',
- SF_NS_FORM_TALK => 'Keskustelu_lomakkeesta'
-);
-
-$namespaceNames['fr'] = array(
- SF_NS_FORM => 'Formulaire',
- SF_NS_FORM_TALK => 'Discussion_formulaire'
-);
-
-/**
- * @author Ivan Lanin
- */
-$namespaceNames['id'] = array(
- SF_NS_FORM => 'Formulir',
- SF_NS_FORM_TALK => 'Pembicaraan_Formulir'
-);
-
-/**
- * @author Melos
- */
-$namespaceNames['it'] = array(
- SF_NS_FORM => 'Modulo',
- SF_NS_FORM_TALK => 'Discussione_modulo'
-);
-
-/**
- * @author Siebrand Mazeland
- */
-$namespaceNames['nl'] = array(
- SF_NS_FORM => 'Formulier',
- SF_NS_FORM_TALK => 'Overleg_formulier'
-);
-
-/**
- * @author Jon Harald Søby
- */
-$namespaceNames['no'] = array(
- SF_NS_FORM => 'Skjema',
- SF_NS_FORM_TALK => 'Skjemadiskusjon'
-);
-
-$namespaceNames['ru'] = array(
- SF_NS_FORM => 'Форма',
- SF_NS_FORM_TALK => 'Обсуждение_формы'
-);
-
-/**
- * @author Roc Michael
- */
-$namespaceNamess['zh-cn'] = array(
- SF_NS_FORM => '表单',
- SF_NS_FORM_TALK => '表单讨论'
-);
-
-/**
- * @author Roc Michael
- */
-$namespaceNames['zh-tw'] = array(
- SF_NS_FORM => '表單',
- SF_NS_FORM_TALK => '表單討論'
-);
diff --git a/SemanticForms/libs/SF_autoedit.js b/SemanticForms/libs/SF_autoedit.js
deleted file mode 100644
index 904251c6..00000000
--- a/SemanticForms/libs/SF_autoedit.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Javascript handler for the autoedit parser function
- *
- * @author Stephan Gambke
- */
-
-/*global confirm */
-
-( function ( $, mw ) {
-
- 'use strict';
-
- var autoEditHandler = function handleAutoEdit(){
-
- if ( mw.config.get( 'wgUserName' ) === null &&
- ! confirm( mw.msg( 'sf_autoedit_anoneditwarning' ) ) ) {
-
- return;
- }
-
- var jtrigger = jQuery( this );
- var jautoedit = jtrigger.closest( '.autoedit' );
- var jresult = jautoedit.find( '.autoedit-result' );
-
- var reload = jtrigger.hasClass( 'reload' );
-
- jtrigger.attr( 'class', 'autoedit-trigger autoedit-trigger-wait' );
- jresult.attr( 'class', 'autoedit-result autoedit-result-wait' );
-
- jresult.text( mw.msg( 'sf-autoedit-wait' ) );
-
-
- // data array to be sent to the server
- var data = {
- action: 'sfautoedit',
- format: 'json'
- };
-
- // add form values to the data
- data.query = jautoedit.find( 'form.autoedit-data' ).serialize();
-
- $.ajax( {
-
- type: 'POST', // request type ( GET or POST )
- url: mw.util.wikiScript( 'api' ), // URL to which the request is sent
- data: data, // data to be sent to the server
- dataType: 'json', // type of data expected back from the server
- success: function ( result ){
- jresult.empty().append( result.responseText );
-
- if ( result.status === 200 ) {
-
- if ( reload ) {
- window.location.reload();
- }
-
- jresult.removeClass( 'autoedit-result-wait' ).addClass( 'autoedit-result-ok' );
- jtrigger.removeClass( 'autoedit-trigger-wait' ).addClass( 'autoedit-trigger-ok' );
- } else {
- jresult.removeClass( 'autoedit-result-wait' ).addClass( 'autoedit-result-error' );
- jtrigger.removeClass( 'autoedit-trigger-wait' ).addClass( 'autoedit-trigger-error' );
- }
- }, // function to be called if the request succeeds
- error: function ( jqXHR, textStatus, errorThrown ) {
- var result = jQuery.parseJSON(jqXHR.responseText);
- var text = result.responseText;
-
- for ( var i = 0; i < result.errors.length; i++ ) {
- text += ' ' + result.errors[i].message;
- }
-
- jresult.empty().append( text );
- jresult.removeClass( 'autoedit-result-wait' ).addClass( 'autoedit-result-error' );
- jtrigger.removeClass( 'autoedit-trigger-wait' ).addClass( 'autoedit-trigger-error' );
- } // function to be called if the request fails
- } );
- };
-
- jQuery( document ).ready( function ( $ ) {
- $( '.autoedit-trigger' ).click( autoEditHandler );
- } );
-
-}( jQuery, mediaWiki ) );
diff --git a/SemanticForms/libs/SF_autogrow.js b/SemanticForms/libs/SF_autogrow.js
deleted file mode 100644
index 2c21a11f..00000000
--- a/SemanticForms/libs/SF_autogrow.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * SF_autogrow.js
- *
- * Allows for 'autogrow' textareas. Based heavily on the 'Autogrow Textarea
- * Plugin' by Jevin O. Sewaruth:
- * http://www.technoreply.com/autogrow-textarea-plugin/
- *
- * Some modifications were made for the code to better work with Semantic
- * Forms.
- *
- * @author Jevin O. Sewaruth
- * @author Yaron Koren
- */
-
-var autoGrowColsDefault = [];
-var autoGrowRowsDefault = [];
-
-function autoGrowSetDefaultValues(textArea) {
- var id = textArea.id;
- autoGrowColsDefault[id] = textArea.cols;
- autoGrowRowsDefault[id] = textArea.rows;
-}
-
-function autoGrow(textArea) {
- var linesCount = 0;
- var lines = textArea.value.split('\n');
-
- for (var i = lines.length-1; i >= 0; --i) {
- linesCount += Math.floor((lines[i].length / autoGrowColsDefault[textArea.id]) + 1);
- }
-
- if (linesCount >= autoGrowRowsDefault[textArea.id]) {
- textArea.rows = linesCount + 1;
- }
- else {
- textArea.rows = autoGrowRowsDefault[textArea.id];
- }
-}
-
-function autoGrowBindEvents(textArea) {
- textArea.onkeyup = function() {
- autoGrow(textArea);
- };
-}
-
-// jQuery method
-jQuery.fn.autoGrow = function() {
- return this.each(function() {
- autoGrowSetDefaultValues(this);
- autoGrowBindEvents(this);
- autoGrow(this);
- });
-};
diff --git a/SemanticForms/libs/SF_checkboxes.js b/SemanticForms/libs/SF_checkboxes.js
deleted file mode 100644
index 019e5021..00000000
--- a/SemanticForms/libs/SF_checkboxes.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Javascript handler for the checkboxes input type
- *
- * @author Stephan Gambke
- */
-
-( function ( $, mw ) {
-
- 'use strict';
-
- // jQuery plugin that will attach a select all/select none switch to all checkboxes in "this" element
- $.fn.appendSelectionSwitches = function () {
-
- function insertSwitch( switchesWrapper, label, checked ) {
-
- // create a link element that will trigger the selection of all checkboxes
- var link = $( '<a href="#">' + label + '</a>' );
-
- // will be initialized only when the event is triggered to avoid lag during page loading
- var $checkboxes;
-
- // attach an event handler
- link.click( function ( event ) {
-
- event.preventDefault();
-
- // store checkboxes during first method call so the DOM is not searched on every click on the link
- $checkboxes = $checkboxes || switchesWrapper.siblings().find( 'input[type="checkbox"]' );
-
- $checkboxes.prop( 'checked', checked );
- } );
-
- // wrap the link into a span to simplify styling
- var switchWrapper = $('<span class="checkboxSwitch">' ).append( link );
-
- // insert the complete switch into the DOM
- switchesWrapper.append( switchWrapper );
-
- }
-
- this.each( function ( index, element ) {
-
- var switchesWrapper = $( '<span class="checkboxSwitches">' ).prependTo( element );
-
- insertSwitch( switchesWrapper, mw.message( 'sf_forminputs_checkboxes_select_all' ), true );
- insertSwitch( switchesWrapper, mw.message( 'sf_forminputs_checkboxes_select_none' ), false );
-
- } );
-
- return this;
- };
-
- $().ready( function ( $ ) {
- $( '.checkboxesSpan.select-all' ).appendSelectionSwitches();
- } );
-
-}( jQuery, mediaWiki ) );
diff --git a/SemanticForms/libs/SF_collapsible.js b/SemanticForms/libs/SF_collapsible.js
deleted file mode 100644
index c945f407..00000000
--- a/SemanticForms/libs/SF_collapsible.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * SF_collapsible.js
- *
- * Allows for collapsible fieldsets.
- *
- * Based on the 'coolfieldset' jQuery plugin:
- * http://w3shaman.com/article/jquery-plugin-collapsible-fieldset
- */
-
-function sfHideFieldsetContent(obj, options){
- obj.find('div').slideUp(options.speed);
- obj.removeClass("sfExpandedFieldset");
- obj.addClass("sfCollapsedFieldset");
-}
-
-function sfShowFieldsetContent(obj, options){
- obj.find('div').slideDown(options.speed);
- obj.removeClass("sfCollapsedFieldset");
- obj.addClass("sfExpandedFieldset");
-}
-
-jQuery.fn.sfMakeCollapsible = function(options){
- var setting = { collapsed: true, speed: 'medium' };
- jQuery.extend(setting, options);
-
- this.each(function(){
- var fieldset = jQuery(this);
- var legend = fieldset.children('legend');
- if ( setting.collapsed === true ) {
- legend.toggle(
- function(){
- sfShowFieldsetContent(fieldset, setting);
- },
- function(){
- sfHideFieldsetContent(fieldset, setting);
- }
- );
-
- sfHideFieldsetContent(fieldset, {animation:false});
- } else {
- legend.toggle(
- function(){
- sfHideFieldsetContent(fieldset, setting);
- },
- function(){
- sfShowFieldsetContent(fieldset, setting);
- }
- );
- }
- });
-};
-
-jQuery(document).ready(function() {
- jQuery('.sfCollapsibleFieldset').sfMakeCollapsible();
-});
diff --git a/SemanticForms/libs/SF_imagePreview.js b/SemanticForms/libs/SF_imagePreview.js
deleted file mode 100644
index c1f3affc..00000000
--- a/SemanticForms/libs/SF_imagePreview.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * JavaScript for the Semantic Forms MediaWiki extension.
- *
- * @licence GNU GPL v3+
- * @author Jeroen De Dauw <jeroendedauw at gmail dot com>
- */
-
-(function( $ ) {
- var _this = this;
-
- this.getPreviewImage = function( args, callback ) {
- $.getJSON(
- mw.config.get( 'wgScriptPath' ) + '/api.php',
- {
- 'action': 'query',
- 'format': 'json',
- 'prop': 'imageinfo',
- 'iiprop': 'url',
- 'titles': 'File:' + args.title,
- 'iiurlwidth': args.width
- },
- function( data ) {
- if ( data.query && data.query.pages ) {
- var pages = data.query.pages;
-
- for ( var p = 0; p < pages.length; p++ ) {
- var info = pages[p].imageinfo;
- for ( var i = 0; i < info.length; i++ ) {
- callback( info[i].thumburl );
- return;
- }
- }
- }
- callback( false );
- }
- );
- };
-
- $( document ).ready( function() {
- $( '.sfImagePreview' ).each( function( index, domElement ) {
- var $uploadLink = $( domElement );
- var inputId = $uploadLink.attr( 'data-input-id' );
- var $input = $( '#' + inputId );
- var $previewDiv = $( '#' + inputId + '_imagepreview' );
-
- var showPreview = function() {
- _this.getPreviewImage(
- {
- 'title': $input.val(),
- 'width': 200
- },
- function( url ) {
- if ( url === false ) {
- $previewDiv.html( '' );
- }
- else {
- $previewDiv.html( $( '<img />' ).attr( { 'src': url } ) );
- }
- }
- );
- };
-
- $input.change( showPreview );
- } );
- } );
-})( jQuery );
diff --git a/SemanticForms/libs/SF_popupform.js b/SemanticForms/libs/SF_popupform.js
deleted file mode 100644
index 02b0e582..00000000
--- a/SemanticForms/libs/SF_popupform.js
+++ /dev/null
@@ -1,829 +0,0 @@
-/**
- * Javascript code to be used with extension SemanticForms for popup forms.
- *
- * @author Stephan Gambke
- *
- */
-/*global escape*/
-
-// initialise
-jQuery( function() {
-
- // register eventhandlers on 'edit' links and buttons
-
- // register formlink with link
- jQuery('a.popupformlink').click(function(evt){
- return ext.popupform.handlePopupFormLink( this.getAttribute('href'), this );
- });
-
- // register formlink with button
- jQuery( 'form.popupformlink' ).submit(function(evt){
- return ext.popupform.handlePopupFormLink( this.getAttribute( 'action' ), this );
- });
-
-
- // register forminput
- jQuery( 'form.popupforminput' ).submit(function(evt){
- return ext.popupform.handlePopupFormInput( this.getAttribute( 'action' ), this );
- });
-
-});
-
-// create ext if it does not exist yet
-if ( typeof( window.ext ) === "undefined" ) {
- window.ext = {};
-}
-
-window.ext.popupform = new function() {
- var wrapper;
- var background;
- var container;
- var innerContainer;
- var iframe;
- var content;
- var waitIndicator;
- var instance = 0;
-
- var timer;
- var needsRender = true;
-
- var doc;
-
- var brokenBrowser, brokenChrome;
-
- var padding = 20;
-
- function handlePopupFormInput( ptarget, elem ) {
- showForm();
-
- iframe.one( 'load', function(){
- // attach event handler to iframe
- iframe.bind( 'load', handleLoadFrame );
- return false;
- });
-
- elem.target = 'popupform-iframe' + instance;
- return true;
- }
-
- function handlePopupFormLink( ptarget, elem ) {
- showForm();
-
- // store initial readystate
- var readystate = iframe.contents()[0].readyState;
-
- // set up timer for waiting on the document in the iframe to be dom-ready
- // this sucks, but there is no other way to catch that event
- // onload is already too late
- timer = setInterval(function(){
- // if the readystate changed
- if ( readystate !== iframe.contents()[0].readyState ) {
- // store new readystate
- readystate = iframe.contents()[0].readyState;
-
- // if dom is built but document not yet displayed
- if ( readystate === 'interactive' || readystate === 'complete' ) {
- needsRender = false; // flag that rendering is already done
- handleLoadFrame();
- }
- }
- }, 100 );
-
- // fallback in case we did not catch the dom-ready state
- iframe.on('load', function( event ){
- if ( needsRender ) { // rendering not already done?
- handleLoadFrame( event );
- }
- needsRender = true;
- });
-
- if ( elem.tagName == 'FORM' ) {
- elem.target = 'popupform-iframe' + instance;
- return true;
- } else {
- var delim = ptarget.indexOf( '?' );
- var form = document.createElement("form");
-
- form.target = 'popupform-iframe' + instance;
-
- // Do we have parameters?
- if ( delim > 0 ) {
- form.action = ptarget.substr( 0, delim );
- var params = String( ptarget.substr( delim + 1 ) ).split("&");
- for ( var i = 0; i < params.length; ++i ) {
-
- var input = document.createElement("input");
- var param = String( params[i] ).split('=');
- input.type = 'hidden';
- input.name = decodeURIComponent( param[0] );
- input.value = decodeURIComponent( param[1] );
- form.appendChild( input );
- }
- } else {
- form.action = ptarget;
- }
-
- document.getElementsByTagName('body')[0].appendChild(form);
- form.submit();
- document.getElementsByTagName('body')[0].removeChild(form);
-
- return false;
- }
- }
-
- function showForm() {
- instance++;
-
- brokenChrome =
- ( navigator.userAgent.indexOf("Chrome") >= 0 &&
- navigator.platform.indexOf("Linux x86_64") >= 0 );
-
- brokenBrowser= jQuery.browser.msie || brokenChrome;
-
- var maxZIndex = 0;
-
- jQuery("*").each(function() {
- var curr = parseInt( jQuery( this ).css( "z-index" ) );
- maxZIndex = curr > maxZIndex ? curr : maxZIndex;
- });
-
-
- wrapper = jQuery( "<div class='popupform-wrapper' >" );
- background = jQuery( "<div class='popupform-background' >" );
-
- var waitIndicatorWrapper = jQuery( "<div class='popupform-loading'>" );
-
- waitIndicator = jQuery( "<div class='popupform-loadingbg'></div><div class='popupform-loadingfg'></div>" );
-
- var anchor = jQuery( "<div class='popupform-anchor' >" );
-
- container = jQuery( "<div class='popupform-container' >" );
- innerContainer = jQuery( "<div class='popupform-innercontainer' >" );
- iframe = jQuery( "<iframe class='popupform-innerdocument' name='popupform-iframe" + instance + "' id='popupform-iframe" + instance + "' >");
-
- var closeBtn = jQuery( "<div class='popupform-close'></div> " );
-
- // initially hide background and waitIndicator
- if (brokenChrome) {
- background.css("background", "transparent");
- } else {
- background.css("opacity", 0.0);
- }
-
- waitIndicator.hide();
- container.hide();
-
- // insert background and wait indicator into wrapper and all into document
- waitIndicatorWrapper
- .append( waitIndicator );
-
- innerContainer
- .append( iframe );
-
- container
- .append( closeBtn )
- .append( innerContainer );
-
- anchor
- .append(container);
-
- wrapper
- .css( "z-index", maxZIndex + 1 )
- .append( background )
- .append( waitIndicatorWrapper )
- .append( anchor )
- .appendTo( "body" );
-
- // fade background in
- if ( !brokenChrome ) {
- background.fadeTo( 400, 0.3 );
- }
- fadeIn( waitIndicator );
-
- // attach event handler to close button
- closeBtn.click( handleCloseFrame );
- }
-
- function handleLoadFrame() {
- var iframecontents = iframe.contents();
-
- var containerAlreadyVisible = container.is( ':visible' );
-
- if ( !containerAlreadyVisible ) {
- // no need to hide it again
- if ( brokenBrowser ) {
- container[0].style.visibility = "hidden";
- } else {
- container[0].style.opacity = 0;
- }
- }
-
- container.show();
-
- // GuMaxDD has #content but keeps headlines in #gumax-content-body
- content = iframecontents.find("#gumax-content-body");
-
- // normal skins use #content (e.g. Vector, Monobook)
- if ( content.length === 0 ) {
- content = iframecontents.find("#content");
- }
-
- // some skins use #mw_content (e.g. Modern)
- if ( content.length === 0 ) {
- content = iframecontents.find("#mw_content");
- }
-
- var iframebody = content.closest("body");
- var iframedoc = iframebody.parent();
-
- // this is not a normal MW page (or it uses an unknown skin)
- if ( content.length === 0 ) {
- content = iframebody;
- }
-
- // the huge left margin looks ugly in Vector, reduce it
- // (How does this look for other skins?)
- var siblings = content
- .css( {
- margin: 0,
- padding: padding,
- width: "auto",
- height: "auto",
- minWidth: "0px",
- minHeight:"0px",
-// overflow: "visible",
-// position: "relative",
-// top: "0",
-// left: "0",
- border: "none"
- } )
- .parentsUntil('html')
- .css( {
- margin: 0,
- padding: 0,
- width: "auto",
- height: "auto",
- minWidth: "0px",
- minHeight: "0px",
- "float": "none", // Cavendish skin uses floating -> unfloat content
-// position: "relative",
-// top: "0",
-// left: "0",
- background: "transparent"
- })
- .andSelf().siblings();
-
- iframedoc.height('100%').width('100%');
- iframebody.height('100%').width('100%');
-
- if ( jQuery.browser.msie && jQuery.browser.version < "8" ) {
- siblings.hide();
- } else {
- siblings
- .each( function(){
- var elem = jQuery(this);
-
- // TODO: Does this really help?
- if ( getStyle(this, "display") != "none" && ! (
- ( this.offsetLeft + elem.outerWidth(true) < 0 ) || // left of document
- ( this.offsetTop + elem.outerHeight(true) < 0 ) || // above document
- ( this.offsetLeft > 100000 ) || // right of document
- ( this.offsetTop > 100000 ) // below document
- )
- ) {
-
- jQuery(this).hide();
- // css({
- // height : "0px",
- // width : "0px",
- // minWidth : "0px",
- // minHeight : "0px",
- // margin : "0px",
- // padding : "0px"
- // border : "none",
- // overflow: "hidden"
- // //position: "static"
- // });
- }
- if ( ( this.offsetLeft + elem.outerWidth() < 0 ) ||
- ( this.offsetTop + elem.outerHeight() < 0 )
- ) {
- this.style.left = (-elem.outerWidth(true)) + "px";
- this.style.top = (-elem.outerHeight(true)) + "px";
- }
- });
- //.children().css("position", "static");
- }
-
- container.show();
-
- // adjust frame size to dimensions just calculated
- adjustFrameSize();
-
- // and attach event handler to adjust frame size every time the window
- // size changes
- jQuery( window ).resize( function() {
- adjustFrameSize();
- } );
-
- //interval = setInterval(adjustFrameSize, 100);
-
- var form = content.find("#sfForm");
- var innerwdw = document.getElementById( 'popupform-iframe' + instance ).contentWindow;
- var innerJ = innerwdw.jQuery;
-
- // if we have a form and it is not a RunQuery form
- if (form.length > 0 && ( typeof form[0].wpRunQuery === 'undefined') ) {
- var submitok = false;
- var innersubmitprocessed = false;
-
- // catch form submit event
- form
- .bind( "submit", function( event ){
- var interval = setInterval(function(){
- if ( innersubmitprocessed ) {
- clearInterval( interval );
- innersubmitprocessed = false;
- if ( submitok ) {
- handleSubmitData( event );
- }
- }
-
- }, 10);
- event.stopPropagation();
- return false;
- });
-
- // catch inner form submit event
- if ( innerJ ) {
- innerwdw.jQuery(form[0])
- .bind( "submit", function( event ) {
- submitok = event.result;
- innersubmitprocessed = true;
- return false;
- });
- } else {
- submitok = true;
- innersubmitprocessed = true;
- }
- }
-
- if (innerJ) {
- // FIXME: Why did I put this in?
- innerwdw.jQuery( innerwdw[0] ).unload(function (event) {
- return false;
- });
-
- //
- content.bind( 'click', function() {
- var foundQueue = false;
- innerJ('*', content[0]).each( function() {
- if ( innerJ(this).queue().length > 0 ) {
- foundQueue = true;
- innerJ(this).queue( function(){
- setTimeout( adjustFrameSize, 100, true );
- innerJ(this).dequeue();
- });
- }
- });
- if ( ! foundQueue ) {
- adjustFrameSize( true );
- }
- return true;
- });
- } else {
- content.bind( 'click', function() {
- adjustFrameSize( true );
- });
- }
-
- // find all links. Have to use inner jQuery so event.result below
- // reflects the result of inner event handlers. We (hopefully) come last
- // in the chain of event handlers as we only attach when the frame is
- // already completely loaded, i.e. every inner event handler is already
- // attached.
- var allLinks = (innerJ)?innerJ("a[href]"):jQuery("a[href]");
-
- // catch 'Cancel'-Link (and other 'back'-links) and close frame instead of going back
- var backlinks = allLinks.filter('a[href="javascript:history.go(-1);"]');
- backlinks.click(handleCloseFrame);
-
- // promote any other links to open in main window, prevent nested browsing
- allLinks
- .not('a[href*="javascript:"]') // scripted links
- .not('a[target]') // targeted links
- .not('a[href^="#"]') // local links
- .not('a.sfFancyBox') // link to file upload
- .click(function(event){
- if ( event.result !== false ) { // if not already caught by somebody else
- closeFrameAndFollowLink( event.target.getAttribute('href') );
- }
- return false;
- });
-
- // finally show the frame, but only if it is not already visible
- if ( ! containerAlreadyVisible ) {
- fadeOut ( waitIndicator, function(){
- fadeTo( container, 400, 1 );
- });
- }
-
- return false;
- }
-
- function handleSubmitData( event ){
- fadeOut( container, function() {
- fadeIn( waitIndicator );
- });
-
- var form = jQuery( event.target );
- var formdata = form.serialize() + "&wpSave=" + escape(form.find("#wpSave").attr("value"));
-
- // Send form data off. SF will send back a fake edit page
- //
- // Normally we should check this.action first and only if it is empty
- // revert to this.ownerDocument.URL. Tough luck, IE does not return an
- // empty action but fills in some bogus
- jQuery.post( event.target.ownerDocument.URL , formdata, handleInnerSubmit);
-
- return false;
-
- function handleInnerSubmit ( returnedData, textStatus, XMLHttpRequest ) {
- // find form in fake edit page
- var innerform = jQuery("<div>" + returnedData + "</div>").find("form");
-
- // check if we got an error page
- if ( innerform.length === 0 ) {
-
- form.unbind( event );
-
- var iframe = container.find("iframe");
- var doc = iframe[0].contentWindow || iframe[0].contentDocument;
- if (doc.document) {
- doc = doc.document;
- }
-
- doc.open();
- doc.write(returnedData);
- doc.close();
-
- return false;
- }
-
- // Send the form data off, we do not care for the returned data
- var innerformdata = innerform.serialize();
- jQuery.post( innerform.attr("action"), innerformdata );
-
- // build new url for outer page (we have to ask for a purge)
-
- var url = location.href;
-
- // does a querystring exist?
- var start = url.indexOf("action=");
-
- if ( start >= 0 ) {
-
- var stop = url.indexOf("&", start);
-
- if ( stop >= 0 ) {
- url = url.substr( 0, start - 1 ) + url.substr(stop + 1);
- } else {
- url = url.substr( 0, start - 1 );
- }
-
- }
-
- form = jQuery('<form action="' + url + '" method="POST"><input type="hidden" name="action" value="purge"></form>')
- .appendTo('body');
-
- form
- .submit();
-
- fadeOut( container, function(){
- fadeIn( waitIndicator );
- });
-
- return false;
- }
- }
-
- function adjustFrameSize( animate ) {
- // set some inputs
- var oldFrameW = container.width();
- var oldFrameH = container.height();
- var oldContW = content.width();
- var oldContH = content.height();
-
- var availW = Math.floor( jQuery(window).width() * 0.8 );
- var availH = Math.floor( jQuery(window).height() * 0.8 );
-
- var emergencyW = Math.floor( jQuery(window).width() * 0.85 );
- var emergencyH = Math.floor( jQuery(window).height() * 0.85 );
-
- // FIXME: these might not be the true values
- var scrollW = 25;
- var scrollH = 25;
-
-
- // find the dimensions of the document
-
- var body = content.closest('body');
- var html = body.parent();
-
- var scrollTgt = html;
-
- if ( jQuery.browser.webkit || jQuery.browser.safari ) {
- scrollTgt = body;
- }
-
- var scrollTop = scrollTgt.scrollTop();
- var scrollLeft = scrollTgt.scrollLeft();
-
- content
- .css('position', 'absolute')
- .width( 'auto' )
- .height( 'auto' );
-
- // set max dimensions for layout of content
- iframe
- .width( emergencyW )
- .height( emergencyH );
-
- // get dimension values
- var docW = content.width();
- var docH = content.height();
-
- // set old dimensions for layout of content
- iframe
- .width( '100%' )
- .height( '100%' );
-
- content
- .css('position', 'relative')
- .width( oldContW )
- .height( oldContH );
-
- if ( jQuery.browser.msie ) {
- docW += 20;
- docH += 20;
- }
-
- var docpW = docW + 2 * padding;
- var docpH = docH + 2 * padding;
-
- // Flags
-
- var needsHScroll = docpW > emergencyW || ( docpW > emergencyW - scrollW && docpH > emergencyH );
- var needsVScroll = docpH > emergencyH || ( docpH > emergencyH - scrollH && docpW > emergencyW );
-
- var needsWStretch =
- ( docpW > availW && docpW <= emergencyW ) && ( docpH <= emergencyH ) ||
- ( docpW > availW - scrollW && docpW <= emergencyW - scrollW ) && ( docpH > emergencyH );
-
- var needsHStretch =
- ( docpH > availH && docpH <= emergencyH ) && ( docpW <= emergencyW ) ||
- ( docpH > availH - scrollH && docpH <= emergencyH - scrollH ) && ( docpW > emergencyW );
-
- // Outputs
-
- var frameW;
- var frameH;
-
- var contW;
- var contH;
-
- if ( needsWStretch ) {
- contW = docW;
- frameW = docpW;
- } else if ( docpW > availW ) { // form does not even fit with stretching
- contW = docW;
- frameW = availW;
- } else {
- //contW = Math.max( Math.min( 1.5 * docW, availW ), availW / 2 );
- contW = docW;
- frameW = docpW;
- }
-
- if ( needsVScroll ){
- frameW += scrollW;
- } else {
- scrollTop = 0;
- }
-
- if ( needsHStretch ) {
- contH = docH;
- frameH = docpH;
- } else if ( docpH > availH ) { // form does not even fit with stretching
- contH = docH;
- frameH = availH;
- } else {
- //contH = Math.min( 1.1 * docH, availH);
- contH = docH;
- frameH = docpH;
- }
-
- if ( needsHScroll ){
- frameH += scrollH;
- } else {
- scrollLeft = 0;
- }
-
- if ( frameW != oldFrameW || frameH != oldFrameH ) {
-
- if ( jQuery.browser.safari ) {
- html[0].style.overflow="hidden";
- } else {
- iframe[0].style.overflow="hidden";
- }
-
- if ( animate ) {
- content
- .width ( 'auto' )
- .height ( 'auto' );
-
- container.animate({
- width: frameW,
- height: frameH,
- top: Math.floor(( - frameH ) / 2),
- left: Math.floor(( - frameW ) / 2)
- }, {
- duration: 500,
- complete: function() {
-
- if ( jQuery.browser.safari ) {
- html[0].style.overflow="visible";
- } else if ( jQuery.browser.msie ) {
- iframe[0].style.overflow="auto";
- } else {
- iframe[0].style.overflow="visible";
- }
-
- if ( jQuery.browser.mozilla ) {
- content
- .width ( contW )
- .height ( contH );
- } else {
- content
- .width ( 'auto' )
- .height ( 'auto' );
- }
- }
- });
-
- } else {
- container
- .width( frameW )
- .height ( frameH );
-
- container[0].style.top = (Math.floor(( - frameH ) / 2)) + "px";
- container[0].style.left = (Math.floor(( - frameW ) / 2)) + "px";
-
-
- setTimeout(function(){
-
- if ( jQuery.browser.safari ) {
- html[0].style.overflow="visible";
- } else if ( jQuery.browser.msie ) {
- iframe[0].style.overflow="auto";
- } else {
- iframe[0].style.overflow="visible";
- }
-
- }, 100);
-
- if ( jQuery.browser.mozilla ) {
- content
- .width ( contW )
- .height ( contH );
- } else {
- content
- .width ( 'auto' )
- .height ( 'auto' );
- }
-
- }
- } else {
- content
- .width ( 'auto' )
- .height ( 'auto' );
-
- if ( jQuery.browser.safari ) { // Google chrome needs a kick
-
- // turn scrollbars off and on again to really only show them when needed
- html[0].style.overflow="hidden";
-
- setTimeout(function(){
- html[0].style.overflow="visible";
- }, 1);
- }
- }
-
- scrollTgt
- .css('overflow', 'auto')
- .scrollTop(Math.min(scrollTop, docpH - frameH))
- .scrollLeft(scrollLeft);
-
- if ( jQuery.browser.mozilla ) {
- body
- .css('overflow', 'auto');
- }
-
- return true;
- }
-
- function closeFrameAndFollowLink( link ){
- clearTimeout(timer);
-
- fadeOut( container, function(){
- fadeIn ( waitIndicator );
- window.location.href = link;
- });
- }
-
- function handleCloseFrame( event ){
- jQuery(window).unbind( "resize", adjustFrameSize );
- clearTimeout(timer);
-
- fadeOut( container, function(){
- background.fadeOut( function(){
- wrapper.remove();
- });
- });
- return false;
- }
-
- // Saw it on http://robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element
- // and liked it
- function getStyle(oElm, strCssRule){
- var strValue = "";
- if(document.defaultView && document.defaultView.getComputedStyle){
- strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
- }
- else if(oElm.currentStyle){
- strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
- return p1.toUpperCase();
- });
- strValue = oElm.currentStyle[strCssRule];
- }
- return strValue;
- }
-
- function fadeIn(elem, callback ) {
- // no fading for broken browsers
- if ( brokenBrowser ){
-
- elem.show();
- if ( callback ) {
- callback();
- }
- } else {
- // what an ugly hack
- if ( elem === waitIndicator ) {
- elem.fadeIn( 200, callback );
- } else {
- elem.fadeIn( callback );
- }
- }
- }
-
- function fadeOut(elem, callback ) {
- // no fading for broken browsers
- if ( brokenBrowser ){
- elem.hide();
- if ( callback ) {
- callback();
- }
- } else {
- // what an ugly hack
- if ( elem === waitIndicator ) {
- elem.fadeOut( 200, callback );
- } else {
- elem.fadeOut( callback );
- }
- }
- }
-
- function fadeTo(elem, time, target, callback) {
- // no fading for broken browsers
- if ( brokenBrowser ){
-
- if (target > 0) {
- elem[0].style.visibility = "visible";
- } else {
- elem[0].style.visibility = "hidden";
- }
-
- if ( callback ) {
- callback();
- }
-
- } else {
- elem.fadeTo(time, target, callback);
- }
- }
-
- // export public funcitons
- this.handlePopupFormInput = handlePopupFormInput;
- this.handlePopupFormLink = handlePopupFormLink;
- this.adjustFrameSize = adjustFrameSize;
-}(); \ No newline at end of file
diff --git a/SemanticForms/libs/SF_preview.js b/SemanticForms/libs/SF_preview.js
deleted file mode 100644
index 0d4f93b7..00000000
--- a/SemanticForms/libs/SF_preview.js
+++ /dev/null
@@ -1,213 +0,0 @@
-/**
- * Handles dynamic Page Preview for Semantic Forms.
- *
- * @author Stephan Gambke
- */
-
-/*global validateAll */
-
-( function ( $, mw ) {
-
- 'use strict';
-
- var form;
- var previewpane;
- var previewHeight;
-
- /**
- * Called when the content is loaded into the preview pane
- */
- var loadFrameHandler = function handleLoadFrame() {
-
- var iframe = $( this );
- var iframecontents = iframe.contents();
-
- // find div containing the preview
- var content = iframecontents.find( '#wikiPreview' );
-
- var iframebody = content.closest( 'body' );
- var iframedoc = iframebody.parent();
- iframedoc.height( 'auto' );
-
- // this is not a normal MW page (or it uses an unknown skin)
- if ( content.length === 0 ) {
- content = iframebody;
- }
-
- content.parentsUntil( 'html' ).andSelf()
- .css( {
- margin: 0,
- padding: 0,
- width: '100%',
- height: 'auto',
- minWidth: '0px',
- minHeight: '0px',
- 'float': 'none', // Cavendish skin uses floating -> unfloat content
- border: 'none',
- background: 'transparent'
- } )
- .siblings()
- .hide(); // FIXME: Some JS scripts don't like working on hidden elements
-
- // and attach event handler to adjust frame size every time the window
- // size changes
- $( window ).resize( function () {
- iframe.height( iframedoc.height() );
- } );
-
- previewpane.show();
-
- var newPreviewHeight = iframedoc.height();
-
- iframe.height( newPreviewHeight );
-
- $( 'html, body' )
- .scrollTop( $( 'html, body' ).scrollTop() + newPreviewHeight - previewHeight )
- .animate( {
- scrollTop: previewpane.offset().top
- }, 1000 );
-
- previewHeight = newPreviewHeight;
-
- return false;
- };
-
- /**
- * Called when the server has sent the preview
- */
- var resultReceivedHandler = function handleResultReceived( result ) {
-
- var htm = result.result;
-
- var iframe = previewpane.children();
-
- if ( iframe.length === 0 ) {
-
- // set initial height of preview area
- previewHeight = 0;
-
- iframe = $( '<iframe>' )
- .css( { //FIXME: Should this go in a style file?
- 'width': '100%',
- 'height': previewHeight,
- 'border': 'none',
- 'overflow': 'hidden'
- } )
- .load( loadFrameHandler )
- .appendTo( previewpane );
-
- }
-
- var ifr = iframe[0];
- var doc = ifr.contentDocument || ifr.contentWindow.document || ifr.Document;
-
- doc.open();
- doc.write( htm );
- doc.close();
-
- };
-
- /**
- * Called when the preview button was clicked
- */
- var previewButtonClickedHandler = function handlePreviewButtonClicked() {
-
- if ( !validateAll() ) {
- return;
- }
-
- // data array to be sent to the server
- var data = {
- action: 'sfautoedit',
- format: 'json'
- };
-
- // do we have a URL like .../index.php?title=pagename&action=formedit ?
- if ( mw.config.get( 'wgAction' ) === 'formedit' ) {
-
- // set the title, server has to find a suitable form
- data.target = mw.config.get( 'wgPageName' );
-
- // do we have a URL like .../Special:FormEdit/formname/pagename ?
- } else if ( mw.config.get( 'wgCanonicalNamespace' ) === 'Special' && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {
-
- // get the pagename and split it into parts
- var pageName = mw.config.get( 'wgPageName' );
- var parts = pageName.split( '/', 3 );
-
- if ( parts.length > 1 ) { // found a formname
- data.form = parts[1];
- }
-
- if ( parts.length > 2 ) { // found a pagename
- data.target = parts[2];
- }
- }
-
- // add form values to the data
- data.query = form.serialize();
-
- if ( data.query.length > 0 ) {
- data.query += '&';
- }
-
- data.query += 'wpPreview=' + encodeURIComponent( $( this ).attr( 'value' ) );
-
- $.ajax( {
-
- type: 'POST', // request type ( GET or POST )
- url: mw.util.wikiScript( 'api' ), // URL to which the request is sent
- data: data, // data to be sent to the server
- dataType: 'json', // type of data expected back from the server
- success: resultReceivedHandler // function to be called if the request succeeds
- } );
- };
-
- /**
- * Register plugin
- */
- $.fn.sfAjaxPreview = function () {
-
- form = this.closest( 'form' );
- previewpane = $( '#wikiPreview' );
-
- // do some sanity checks
- if ( previewpane.length === 0 || // no ajax preview without preview area
- previewpane.contents().length > 0 || // preview only on an empty previewpane
- form.length === 0 ) { // no ajax preview without form
-
- return this;
- }
-
- // IE does not allow setting of the 'type' attribute for inputs
- // => completely replace the original preview button
- var btn = $( '<input type=\'button\' />' ).insertBefore( this );
-
- this.remove();
-
- // copy all explicitly specified attributes (except 'type' attribute)
- // from the old to the new button
- var oldBtnElement = this[0];
- var i;
-
- for ( i = 0; i < oldBtnElement.attributes.length; i = i + 1 ) {
- var attribute = oldBtnElement.attributes[i];
- if ( attribute.name !== 'type' ) {
- btn.attr( attribute.name, attribute.value );
- }
- }
-
- // register event handler
- btn.click( previewButtonClickedHandler );
-
- return btn;
- };
-
- $( document ).ready( function () {
- if ( mw.config.get( 'wgAction' ) === 'formedit' ||
- mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {
- $( '#wpPreview' ).sfAjaxPreview();
- }
- } );
-
-}( jQuery, mediaWiki ) );
diff --git a/SemanticForms/libs/SF_submit.js b/SemanticForms/libs/SF_submit.js
deleted file mode 100644
index 9a3dcdba..00000000
--- a/SemanticForms/libs/SF_submit.js
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
-* Javascript handler for the save-and-continue button
-*
- * @author Stephan Gambke
-*/
-
-/*global validateAll */
-
-( function ( $, mw ) {
-
- 'use strict';
-
- var sacButtons;
- var form;
-
- function setChanged( event ) {
- sacButtons
- .removeAttr( 'disabled' )
- .addClass( 'sf-save_and_continue-changed' );
-
- return true;
- }
-
- /**
- * Called when the server has sent the preview
- */
- var resultReceivedHandler = function handleResultReceived( result, textStatus, jqXHR ) {
-
- // Store the target name
- var target = form.find( 'input[name="target"]' );
-
- if ( target.length === 0 ) {
- target = $( '<input type="hidden" name="target">' );
- form.append ( target );
- }
-
- target.attr( 'value', result.target );
-
- // Store the form name
- target = form.find( 'input[name="form"]' );
-
- if ( target.length === 0 ) {
- target = $( '<input type="hidden" name="form">' );
- form.append ( target );
- }
-
- target.attr( 'value', result.form.title );
-
- sacButtons
- .addClass( 'sf-save_and_continue-ok' )
- .removeClass( 'sf-save_and_continue-wait' )
- .removeClass( 'sf-save_and_continue-error' );
-
- };
-
- var resultReceivedErrorHandler = function handleError( jqXHR ){
-
- var errors = $.parseJSON( jqXHR.responseText ).errors;
-
- sacButtons
- .addClass( 'sf-save_and_continue-error' )
- .removeClass( 'sf-save_and_continue-wait' );
-
- // Remove all old error messages and set new ones
- $( '.errorbox' ).remove();
-
-
- if ( errors.length > 0 ){
- var i;
- for ( i = 0; i < errors.length; i += 1 ) {
- if ( errors[i].level < 2 ) { // show errors and warnings
- $( '#contentSub' )
- .append( '<div id="form_error_header" class="errorbox" style="font-size: medium"><img src="' + mw.config.get( 'sfgScriptPath' ) + '/skins/MW-Icon-AlertMark.png" />&nbsp;' + errors[i].message + '</div><br clear="both" />' );
- }
- }
-
- $( 'html, body' ).scrollTop( $( '#contentSub' ).offset().top );
- }
- };
-
- function collectData( form ) {
- var summaryfield = jQuery( '#wpSummary', form );
- var saveAndContinueSummary = mw.msg( 'sf_formedit_saveandcontinue_summary', mw.msg( 'sf_formedit_saveandcontinueediting' ) );
- var params;
-
- if ( summaryfield.length > 0 ) {
-
- var oldsummary = summaryfield.attr( 'value' );
-
- if ( oldsummary !== '' ) {
- summaryfield.attr( 'value', oldsummary + ' (' + saveAndContinueSummary + ')' );
- } else {
- summaryfield.attr( 'value', saveAndContinueSummary );
- }
-
- params = form.serialize();
-
- summaryfield.attr( 'value', oldsummary );
- } else {
- params = form.serialize();
- params += '&wpSummary=' + saveAndContinueSummary;
- }
-
- if ( mw.config.get( 'wgAction' ) === 'formedit' ) {
- params += '&target=' + encodeURIComponent( mw.config.get( 'wgPageName' ) );
- } else if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {
- var url = mw.config.get( 'wgPageName' );
-
- var start = url.indexOf( '/' ) + 1; // find start of subpage
- var stop;
-
- if ( start >= 0 ) {
- stop = url.indexOf( '/', start ); // find end of first subpage
- } else {
- stop = -1;
- }
-
- if ( stop >= 0 ) {
- params += '&form=' + encodeURIComponent( url.substring( start, stop ) );
-
- start = stop + 1;
- params += '&target=' + encodeURIComponent( url.substr( start ) );
-
- } else {
- params += '&form=' + encodeURIComponent( url.substr( start ) );
- }
- }
-
- params += '&wpMinoredit=1';
-
- return params;
- }
-
- function handleSaveAndContinue( event ) {
-
- event.stopImmediatePropagation();
-
- // remove old error messages
- var el = document.getElementById( 'form_error_header' );
-
- if ( el ) {
- el.parentNode.removeChild( el );
- }
-
- if ( validateAll() ) {
- // disable save and continue button
- sacButtons
- .attr( 'disabled', 'disabled' )
- .addClass( 'sf-save_and_continue-wait' )
- .removeClass( 'sf-save_and_continue-changed' );
-
- var form = $( '#sfForm' );
-
- var data = {
- action: 'sfautoedit',
- format: 'json',
- query: collectData( form ) // add form values to the data
- };
-
- data.query += '&wpSave=' + encodeURIComponent( $( event.currentTarget ).attr( 'value' ) );
-
- $.ajax( {
-
- type: 'POST', // request type ( GET or POST )
- url: mw.util.wikiScript( 'api' ), // URL to which the request is sent
- data: data, // data to be sent to the server
- dataType: 'json', // type of data expected back from the server
- success: resultReceivedHandler, // function to be called if the request succeeds
- error: resultReceivedErrorHandler // function to be called on error
- } );
-
- }
-
- return false;
- }
-
- if ( mw.config.get( 'wgAction' ) === 'formedit' || mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {
- form = $( '#sfForm' );
-
- sacButtons = $( '.sf-save_and_continue', form );
- sacButtons.click( handleSaveAndContinue );
-
- $( form )
- .on( 'keyup', 'input,select,textarea', function ( event ) {
- if ( event.which < 32 ){
- return true;
- }
-
- return setChanged( event );
- } )
- .on( 'change', 'input,select,textarea', setChanged )
- .on( 'click', '.multipleTemplateAdder,.removeButton,.rearrangerImage', setChanged )
- .on( 'mousedown', '.rearrangerImage',setChanged );
-
- }
-
-}( jQuery, mediaWiki ) );
diff --git a/SemanticForms/libs/SF_wikieditor.js b/SemanticForms/libs/SF_wikieditor.js
deleted file mode 100644
index 85270810..00000000
--- a/SemanticForms/libs/SF_wikieditor.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// create ext if it does not exist yet
-/*global wgWikiEditorEnabledModules*/
-if ( window.ext == null || typeof( window.ext ) === "undefined" ) {
- window.ext = {};
-}
-
-window.ext.wikieditor = {
- // initialize the wikieditor on the specified element
- init : function init ( input_id, params ) {
- jQuery( function() {
- if ( window.mediaWiki ) {
- var input = jQuery( '#' + input_id );
-
- // load toolbar
- mediaWiki.loader.using( ['jquery.wikiEditor.toolbar', 'jquery.wikiEditor.toolbar.config'] , function(){
- if ( jQuery.wikiEditor.isSupported( jQuery.wikiEditor.modules.toolbar ) ) {
- input.wikiEditor( 'addModule', jQuery.wikiEditor.modules.toolbar.config.getDefaultConfig() );
-
- // hide sig if required
- if ( wgWikiEditorEnabledModules && wgWikiEditorEnabledModules.hidesig === true ) {
- input.wikiEditor( 'removeFromToolbar', {
- 'section': 'main',
- 'group': 'insert',
- 'tool': 'signature'
- } );
- }
-
- }
- });
-
- // load dialogs
- mediaWiki.loader.using( ['jquery.wikiEditor.dialogs', 'jquery.wikiEditor.dialogs.config'] , function(){
- if ( jQuery.wikiEditor.isSupported( jQuery.wikiEditor.modules.dialogs ) ) {
- jQuery.wikiEditor.modules.dialogs.config.replaceIcons( input );
- input.wikiEditor( 'addModule', $.wikiEditor.modules.dialogs.config.getDefaultConfig() );
-
- }
- });
- }
- });
- }
-};
diff --git a/SemanticForms/libs/SemanticForms.js b/SemanticForms/libs/SemanticForms.js
deleted file mode 100644
index 49e07ae7..00000000
--- a/SemanticForms/libs/SemanticForms.js
+++ /dev/null
@@ -1,1084 +0,0 @@
-/**
- * SemanticForms.js
- *
- * Javascript utility functions for the Semantic Forms extension.
- *
- * @author Yaron Koren
- * @author Sanyam Goyal
- * @author Stephan Gambke
- * @author Jeffrey Stuckman
- * @author Harold Solbrig
- * @author Eugene Mednikov
- */
- /*global sfgShowOnSelect, sfgFieldProperties, validateAll, alert, sf*/
-
-// Activate autocomplete functionality for the specified field
-(function(jQuery) {
-
- /* extending jQuery functions for custom highlighting */
- jQuery.ui.autocomplete.prototype._renderItem = function( ul, item) {
-
- var delim = this.element.context.delimiter;
- var term;
- if ( delim === null ) {
- term = this.term;
- } else {
- term = this.term.split( delim ).pop();
- }
- var re = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi");
- var loc = item.label.search(re);
- var t;
- if (loc >= 0) {
- t = item.label.substr(0, loc) + '<strong>' + item.label.substr(loc, term.length) + '</strong>' + item.label.substr(loc + term.length);
- } else {
- t = item.label;
- }
- return jQuery( "<li></li>" )
- .data( "item.autocomplete", item )
- .append( " <a>" + t + "</a>" )
- .appendTo( ul );
- };
-
- jQuery.fn.attachAutocomplete = function() {
- return this.each(function() {
- // Get all the necessary values from the input's "autocompletesettings"
- // attribute. This should probably be done as three separate attributes,
- // instead.
- var field_string = jQuery(this).attr("autocompletesettings");
-
- if ( typeof field_string === 'undefined' ) {
- return;
- }
-
- var field_values = field_string.split(',');
- var delimiter = null;
- var data_source = field_values[0];
- if (field_values[1] == 'list') {
- delimiter = ",";
- if (field_values[2] !== null && field_values[2] !== undefined) {
- delimiter = field_values[2];
- }
- }
-
- // Modify the delimiter. If it's "\n", change it to an actual
- // newline - otherwise, add a space to the end.
- // This doesn't cover the case of a delimiter that's a newline
- // plus something else, like ".\n" or "\n\n", but as far as we
- // know no one has yet needed that.
- if ( delimiter !== null && delimiter !== undefined ) {
- if ( delimiter == "\\n" ) {
- delimiter = "\n";
- } else {
- delimiter += " ";
- }
- }
- // Store this value within the object, so that it can be used
- // during highlighting of the search term as well.
- this.delimiter = delimiter;
-
- /* extending jquery functions */
- jQuery.extend( jQuery.ui.autocomplete, {
- filter: function(array, term) {
- var sfgAutocompleteOnAllChars = mw.config.get( 'sfgAutocompleteOnAllChars' );
- var matcher;
- if ( sfgAutocompleteOnAllChars ) {
- matcher = new RegExp(jQuery.ui.autocomplete.escapeRegex(term), "i" );
- } else {
- matcher = new RegExp("\\b" + jQuery.ui.autocomplete.escapeRegex(term), "i" );
- }
- return jQuery.grep( array, function(value) {
- return matcher.test( value.label || value.value || value );
- });
- }
- });
-
- var values = jQuery(this).data('autocompletevalues');
- if ( !values ) {
- var sfgAutocompleteValues = mw.config.get( 'sfgAutocompleteValues' );
- values = sfgAutocompleteValues[field_string];
- }
- var split = function (val) {
- return val.split(delimiter);
- };
- var extractLast = function (term) {
- return split(term).pop();
- };
- if (values !== null && values !== undefined) {
- // Local autocompletion
-
- if (delimiter !== null && delimiter !== undefined) {
- // Autocomplete for multiple values
-
- var thisInput = jQuery(this);
-
- jQuery(this).autocomplete({
- minLength: 0,
- source: function(request, response) {
- // We need to re-get the set of values, since
- // the "values" variable gets overwritten.
- values = thisInput.data( 'autocompletevalues' );
- if ( !values ) {
- values = sfgAutocompleteValues[field_string];
- }
- response(jQuery.ui.autocomplete.filter(values, extractLast(request.term)));
- },
- focus: function() {
- // prevent value inserted on focus
- return false;
- },
- select: function(event, ui) {
- var terms = split( this.value );
- // remove the current input
- terms.pop();
- // add the selected item
- terms.push( ui.item.value );
- // add placeholder to get the comma-and-space at the end
- terms.push("");
- this.value = terms.join(delimiter);
- return false;
- }
- });
-
- } else {
- // Autocomplete for a single value
- jQuery(this).autocomplete({
- source:values
- });
- }
- } else {
- // Remote autocompletion.
- var myServer = mw.util.wikiScript( 'api' );
- var data_type = jQuery(this).attr("autocompletedatatype");
- myServer += "?action=sfautocomplete&format=json&" + data_type + "=" + data_source;
-
- if (delimiter !== null && delimiter !== undefined) {
- jQuery(this).autocomplete({
- source: function(request, response) {
- jQuery.getJSON(myServer, {
- substr: extractLast(request.term)
- }, function( data ) {
- response(jQuery.map(data.sfautocomplete, function(item) {
- return {
- value: item.title
- };
- }));
- });
- },
- search: function() {
- // custom minLength
- var term = extractLast(this.value);
- if (term.length < 1) {
- return false;
- }
- },
- focus: function() {
- // prevent value inserted on focus
- return false;
- },
- select: function(event, ui) {
- var terms = split( this.value );
- // remove the current input
- terms.pop();
- // add the selected item
- terms.push( ui.item.value );
- // add placeholder to get the comma-and-space at the end
- terms.push("");
- this.value = terms.join(delimiter);
- return false;
- }
- } );
- } else {
- jQuery(this).autocomplete({
- minLength: 1,
- source: function(request, response) {
- jQuery.ajax({
- url: myServer,
- dataType: "json",
- data: {
- substr:request.term
- },
- success: function( data ) {
- response(jQuery.map(data.sfautocomplete, function(item) {
- return {
- value: item.title
- };
- }));
- }
- });
- },
- open: function() {
- jQuery(this).removeClass("ui-corner-all").addClass("ui-corner-top");
- },
- close: function() {
- jQuery(this).removeClass("ui-corner-top").addClass("ui-corner-all");
- }
- } );
- }
- }
- });
- };
-})( jQuery );
-
-
-/*
- * Functions to register/unregister methods for the initialization and
- * validation of inputs.
- */
-
-// Initialize data object to hold initialization and validation data
-function setupSF() {
-
- jQuery("#sfForm").data("SemanticForms",{
- initFunctions : [],
- validationFunctions : []
- });
-
-}
-
-// Register a validation method
-//
-// More than one method may be registered for one input by subsequent calls to
-// SemanticForms_registerInputValidation.
-//
-// Validation functions and their data are stored in a numbered array
-//
-// @param valfunction The validation functions. Must take a string (the input's id) and an object as parameters
-// @param param The parameter object given to the validation function
-jQuery.fn.SemanticForms_registerInputValidation = function(valfunction, param) {
-
- if ( ! this.attr("id") ) {
- return this;
- }
-
- if ( ! jQuery("#sfForm").data("SemanticForms") ) {
- setupSF();
- }
-
- jQuery("#sfForm").data("SemanticForms").validationFunctions.push({
- input : this.attr("id"),
- valfunction : valfunction,
- parameters : param
- });
-
- return this;
-};
-
-// Register an initialization method
-//
-// More than one method may be registered for one input by subsequent calls to
-// SemanticForms_registerInputInit. This method also executes the initFunction
-// if the element referenced by /this/ is not part of a multipleTemplateStarter.
-//
-// Initialization functions and their data are stored in a associative array
-//
-// @param initFunction The initialization function. Must take a string (the input's id) and an object as parameters
-// @param param The parameter object given to the initialization function
-// @param noexecute If set, the initialization method will not be executed here
-jQuery.fn.SemanticForms_registerInputInit = function( initFunction, param, noexecute ) {
-
- // return if element has no id
- if ( ! this.attr("id") ) {
- return this;
- }
-
- // setup data structure if necessary
- if ( ! jQuery("#sfForm").data("SemanticForms") ) {
- setupSF();
- }
-
- // if no initialization function for this input was registered yet,
- // create entry
- if ( ! jQuery("#sfForm").data("SemanticForms").initFunctions[this.attr("id")] ) {
- jQuery("#sfForm").data("SemanticForms").initFunctions[this.attr("id")] = [];
- }
-
- // record initialization function
- jQuery("#sfForm").data("SemanticForms").initFunctions[this.attr("id")].push({
- initFunction : initFunction,
- parameters : param
- });
-
- // execute initialization if input is not part of multipleTemplateStarter
- // and if not forbidden
- if ( this.closest(".multipleTemplateStarter").length === 0 && !noexecute) {
- var input = this;
- // ensure initFunction is only exectued after doc structure is complete
- jQuery(function() {initFunction ( input.attr("id"), param );});
- }
-
- return this;
-};
-
-// Unregister all validation methods for the element referenced by /this/
-jQuery.fn.SemanticForms_unregisterInputValidation = function() {
-
- var sfdata = jQuery("#sfForm").data("SemanticForms");
-
- if ( this.attr("id") && sfdata ) {
- // delete every validation method for this input
- for ( var i = 0; i < sfdata.validationFunctions.length; i++ ) {
- if ( typeof sfdata.validationFunctions[i] !== 'undefined' &&
- sfdata.validationFunctions[i].input == this.attr("id") ) {
- delete sfdata.validationFunctions[i];
- }
- }
- }
-
- return this;
-};
-
-// Unregister all initialization methods for the element referenced by /this/
-jQuery.fn.SemanticForms_unregisterInputInit = function() {
-
- if ( this.attr("id") && jQuery("#sfForm").data("SemanticForms") ) {
- delete jQuery("#sfForm").data("SemanticForms").initFunctions[this.attr("id")];
- }
-
- return this;
-};
-
-/*
- * Functions for handling 'show on select'
- */
-
-// Display a div that would otherwise be hidden by "show on select".
-function showDiv(div_id, instanceWrapperDiv, speed) {
- var elem = jQuery('[id="' + div_id + '"]', instanceWrapperDiv);
-
- elem
- .find(".hiddenBySF")
- .removeClass('hiddenBySF')
-
- .find(".disabledBySF")
- .removeAttr('disabled')
- .removeClass('disabledBySF');
-
- elem.each( function() {
- if ( jQuery(this).css('display') == 'none' ) {
-
- jQuery(this).slideDown(speed, function() {
- jQuery(this).fadeTo(speed,1);
- });
-
- }
- });
-}
-
-// Hide a div due to "show on select". The CSS class is there so that SF can
-// ignore the div's contents when the form is submitted.
-function hideDiv(div_id, instanceWrapperDiv, speed) {
- // IDs can't contain spaces, and jQuery won't work with such IDs - if
- // this one has a space, display an alert.
- if ( div_id.indexOf( ' ' ) > -1 ) {
- // TODO - this should probably be a language value, instead of
- // hardcoded in English.
- alert( "Warning: this form has \"show on select\" pointing to an invalid element ID (\"" + div_id + "\") - IDs in HTML cannot contain spaces." );
- }
-
- var elem = jQuery('[id="' + div_id + '"]', instanceWrapperDiv);
- elem.find("span, div").addClass('hiddenBySF');
-
- elem.each( function() {
- if ( jQuery(this).css('display') != 'none' ) {
-
- // if 'display' is not 'hidden', but the element is hidden otherwise
- // (e.g. by having height = 0), just hide it, else animate the hiding
- if ( jQuery(this).is(':hidden') ) {
- jQuery(this).hide();
- } else {
- jQuery(this).fadeTo(speed, 0, function() {
- jQuery(this).slideUp(speed);
- });
- }
- }
- });
-}
-
-// Show this div if the current value is any of the relevant options -
-// otherwise, hide it.
-function showDivIfSelected(options, div_id, inputVal, instanceWrapperDiv, initPage) {
- for ( var i = 0; i < options.length; i++ ) {
- // If it's a listbox and the user has selected more than one
- // value, it'll be an array - handle either case.
- if ((jQuery.isArray(inputVal) && jQuery.inArray(options[i], inputVal) >= 0) ||
- (!jQuery.isArray(inputVal) && (inputVal == options[i]))) {
- showDiv( div_id, instanceWrapperDiv, initPage ? 0 : 'fast' );
- return;
- }
- }
- hideDiv(div_id, instanceWrapperDiv, initPage ? 0 : 'fast' );
-}
-
-// Used for handling 'show on select' for the 'dropdown' and 'listbox' inputs.
-jQuery.fn.showIfSelected = function(initPage) {
- var inputVal = this.val();
- var sfgShowOnSelect = mw.config.get( 'sfgShowOnSelect' );
- var showOnSelectVals = sfgShowOnSelect[this.attr("id")];
-
- var instanceWrapperDiv = this.closest('.multipleTemplateInstance');
- if ( instanceWrapperDiv.length === 0 ) {
- instanceWrapperDiv = null;
- }
-
- if ( showOnSelectVals !== undefined ) {
- for ( var i = 0; i < showOnSelectVals.length; i++ ) {
- var options = showOnSelectVals[i][0];
- var div_id = showOnSelectVals[i][1];
- showDivIfSelected( options, div_id, inputVal, instanceWrapperDiv, initPage );
- }
- }
-
- return this;
-};
-
-// Show this div if any of the relevant selections are checked -
-// otherwise, hide it.
-jQuery.fn.showDivIfChecked = function(options, div_id, instanceWrapperDiv, initPage ) {
- for ( var i = 0; i < options.length; i++ ) {
- if (jQuery(this).find('[value="' + options[i] + '"]').is(":checked")) {
- showDiv(div_id, instanceWrapperDiv, initPage ? 0 : 'fast' );
- return this;
- }
- }
- hideDiv(div_id, instanceWrapperDiv, initPage ? 0 : 'fast' );
-
- return this;
-};
-
-// Used for handling 'show on select' for the 'checkboxes' and 'radiobutton'
-// inputs.
-jQuery.fn.showIfChecked = function(initPage) {
- var sfgShowOnSelect = mw.config.get( 'sfgShowOnSelect' );
- var showOnSelectVals = sfgShowOnSelect[this.attr("id")];
-
- var instanceWrapperDiv = this.closest('.multipleTemplateInstance');
- if ( instanceWrapperDiv.length === 0 ) {
- instanceWrapperDiv = null;
- }
-
- if ( showOnSelectVals !== undefined ) {
- for ( var i = 0; i < showOnSelectVals.length; i++ ) {
- var options = showOnSelectVals[i][0];
- var div_id = showOnSelectVals[i][1];
- this.showDivIfChecked(options, div_id, instanceWrapperDiv, initPage );
- }
- }
-
- return this;
-};
-
-// Used for handling 'show on select' for the 'checkbox' input.
-jQuery.fn.showIfCheckedCheckbox = function(initPage) {
- var sfgShowOnSelect = mw.config.get( 'sfgShowOnSelect' );
- var div_id = sfgShowOnSelect[this.attr("id")];
-
- var instanceWrapperDiv = this.closest('.multipleTemplateInstance');
- if ( instanceWrapperDiv.length === 0 ) {
- instanceWrapperDiv = null;
- }
-
- if (jQuery(this).is(":checked")) {
- showDiv(div_id, instanceWrapperDiv, initPage ? 0 : 'fast' );
- } else {
- hideDiv(div_id, instanceWrapperDiv, initPage ? 0 : 'fast' );
- }
-
- return this;
-};
-
-/*
- * Validation functions
- */
-
-// Display an error message on the end of an input.
-jQuery.fn.addErrorMessage = function(msg, val) {
- this.append(' ').append( $('<span>').addClass( 'errorMessage' ).text( mw.msg( msg, val ) ) );
-};
-
-jQuery.fn.validateNumInstances = function() {
- var minimumInstances = this.attr("minimumInstances");
- var maximumInstances = this.attr("maximumInstances");
- var numInstances = this.find("div.multipleTemplateInstance").length;
- if ( numInstances < minimumInstances ) {
- this.parent().addErrorMessage( 'sf_too_few_instances_error', minimumInstances );
- return false;
- } else if ( numInstances > maximumInstances ) {
- this.parent().addErrorMessage( 'sf_too_many_instances_error', maximumInstances );
- return false;
- } else {
- return true;
- }
-};
-
-jQuery.fn.validateMandatoryField = function() {
- var fieldVal = this.find(".mandatoryField").val();
- var isEmpty;
- if (fieldVal === null) {
- isEmpty = true;
- } else if (jQuery.isArray(fieldVal)) {
- isEmpty = (fieldVal.length === 0);
- } else {
- isEmpty = (fieldVal.replace(/\s+/, '') === '');
- }
- if (isEmpty) {
- this.addErrorMessage( 'sf_blank_error' );
- return false;
- } else {
- return true;
- }
-};
-
-jQuery.fn.validateMandatoryComboBox = function() {
- var combobox = this.find( "input.sfComboBox" );
- if (combobox.val() === '') {
- this.addErrorMessage( 'sf_blank_error' );
- return false;
- } else {
- return true;
- }
-};
-
-jQuery.fn.validateMandatoryDateField = function() {
- if (this.find(".dayInput").val() === '' ||
- this.find(".monthInput").val() === '' ||
- this.find(".yearInput").val() === '') {
- this.addErrorMessage( 'sf_blank_error' );
- return false;
- } else {
- return true;
- }
-};
-
-// Special handling for radiobuttons, because what's being checked
-// is the first radiobutton, which has an empty value.
-jQuery.fn.validateMandatoryRadioButton = function() {
- if (this.find("[value='']").is(':checked')) {
- this.addErrorMessage( 'sf_blank_error' );
- return false;
- } else {
- return true;
- }
-};
-
-jQuery.fn.validateMandatoryCheckboxes = function() {
- // Get the number of checked checkboxes within this span - must
- // be at least one.
- var numChecked = this.find("input:checked").size();
- if (numChecked === 0) {
- this.addErrorMessage( 'sf_blank_error' );
- return false;
- } else {
- return true;
- }
-};
-
-/*
- * Type-based validation
- */
-
-jQuery.fn.validateURLField = function() {
- var fieldVal = this.find("input").val();
- // code borrowed from http://snippets.dzone.com/posts/show/452
- var url_regexp = /(ftp|http|https|rtsp|news):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
- if (fieldVal === "" || url_regexp.test(fieldVal)) {
- return true;
- } else {
- this.addErrorMessage( 'sf_bad_url_error' );
- return false;
- }
-};
-
-jQuery.fn.validateEmailField = function() {
- var fieldVal = this.find("input").val();
- // code borrowed from http://javascript.internet.com/forms/email-validation---basic.html
- var email_regexp = /^\s*\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+\s*$/;
- if (fieldVal === '' || email_regexp.test(fieldVal)) {
- return true;
- } else {
- this.addErrorMessage( 'sf_bad_email_error' );
- return false;
- }
-};
-
-jQuery.fn.validateNumberField = function() {
- var fieldVal = this.find("input").val();
- // Handle "E notation"/scientific notation ("1.2e-3") in addition
- // to regular numbers
- if (fieldVal === '' ||
- fieldVal.match(/^\s*[\-+]?((\d+[\.,]?\d*)|(\d*[\.,]?\d+))([eE]?[\-\+]?\d+)?\s*$/)) {
- return true;
- } else {
- this.addErrorMessage( 'sf_bad_number_error' );
- return false;
- }
-};
-
-jQuery.fn.validateDateField = function() {
- // validate only if day and year fields are both filled in
- var dayVal = this.find(".dayInput").val();
- var yearVal = this.find(".yearInput").val();
- if (dayVal === '' || yearVal === '') {
- return true;
- } else if (dayVal.match(/^\d+$/) && dayVal <= 31) {
- // no year validation, since it can also include
- // 'BC' and possibly other non-number strings
- return true;
- } else {
- this.addErrorMessage( 'sf_bad_date_error' );
- return false;
- }
-};
-
-window.validateAll = function () {
- var num_errors = 0;
-
- // Remove all old error messages.
- jQuery(".errorMessage").remove();
-
- // Make sure all inputs are ignored in the "starter" instance
- // of any multiple-instance template.
- jQuery(".multipleTemplateStarter").find("span, div").addClass("hiddenBySF");
-
- jQuery(".multipleTemplateList").each( function() {
- if (! jQuery(this).validateNumInstances() ) {
- num_errors += 1;
- }
- });
-
- jQuery("span.inputSpan.mandatoryFieldSpan").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateMandatoryField() ) {
- num_errors += 1;
- }
- });
- jQuery("div.ui-widget.mandatory").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateMandatoryComboBox() ) {
- num_errors += 1;
- }
- });
- jQuery("span.dateInput.mandatoryFieldSpan").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateMandatoryDateField() ) {
- num_errors += 1;
- }
- });
- jQuery("span.radioButtonSpan.mandatoryFieldSpan").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateMandatoryRadioButton() ) {
- num_errors += 1;
- }
- });
- jQuery("span.checkboxesSpan.mandatoryFieldSpan").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateMandatoryCheckboxes() ) {
- num_errors += 1;
- }
- });
- jQuery("span.URLInput").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateURLField() ) {
- num_errors += 1;
- }
- });
- jQuery("span.emailInput").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateEmailField() ) {
- num_errors += 1;
- }
- });
- jQuery("span.numberInput").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateNumberField() ) {
- num_errors += 1;
- }
- });
- jQuery("span.dateInput").not(".hiddenBySF").each( function() {
- if (! jQuery(this).validateDateField() ) {
- num_errors += 1;
- }
- });
-
- // call registered validation functions
- var sfdata = jQuery("#sfForm").data('SemanticForms');
-
- if ( sfdata && sfdata.validationFunctions.length > 0 ) { // found data object?
-
- // for every registered input
- for ( var i = 0; i < sfdata.validationFunctions.length; i++ ) {
-
- // if input is not part of multipleTemplateStarter
- if ( typeof sfdata.validationFunctions[i] !== 'undefined' &&
- jQuery("#" + sfdata.validationFunctions[i].input).closest(".multipleTemplateStarter").length === 0 &&
- jQuery("#" + sfdata.validationFunctions[i].input).closest(".hiddenBySF").length === 0 ) {
-
- if (! sfdata.validationFunctions[i].valfunction(
- sfdata.validationFunctions[i].input,
- sfdata.validationFunctions[i].parameters)
- ) {
- num_errors += 1;
- }
- }
- }
- }
-
- if (num_errors > 0) {
- // add error header, if it's not there already
- if (jQuery("#form_error_header").size() === 0) {
- jQuery("#contentSub").append('<div id="form_error_header" class="errorbox" style="font-size: medium"><img src="' + mw.config.get( 'sfgScriptPath' ) + '/skins/MW-Icon-AlertMark.png" />&nbsp;' + mw.message( 'sf_formerrors_header' ).escaped() + '</div><br clear="both" />');
- }
- scroll(0, 0);
- } else {
- // Disable inputs hidden due to either "show on select" or
- // because they're part of the "starter" div for
- // multiple-instance templates, so that they aren't
- // submitted by the form.
- jQuery('.hiddenBySF').find("input, select, textarea").not(':disabled')
- .attr('disabled', 'disabled')
- .addClass('disabledBySF');
- //remove error box if it exists because there are no errors in the form now
- jQuery("#contentSub").find(".errorbox").remove();
- }
- return (num_errors === 0);
-};
-
-/**
- * Functions for multiple-instance templates.
- */
-
-jQuery.fn.addInstance = function( addAboveCurInstance ) {
- // Global variable.
- num_elements++;
-
- // Create the new instance
- var new_div = this.closest(".multipleTemplateWrapper")
- .find(".multipleTemplateStarter")
- .clone()
- .removeClass('multipleTemplateStarter')
- .addClass('multipleTemplateInstance')
- .addClass('multipleTemplate') // backwards compatibility
- .removeAttr("id")
- .fadeTo(0,0)
- .slideDown('fast', function() {
- jQuery(this).fadeTo('fast', 1);
- });
-
- new_div.find('.hiddenBySF')
- .removeClass('hiddenBySF')
-
- .find('.disabledBySF')
- .removeAttr('disabled')
- .removeClass('disabledBySF');
-
- // Make internal ID unique for the relevant form elements, and replace
- // the [num] index in the element names with an actual unique index
- new_div.find("input, select, textarea").each(
- function() {
- // Add in a 'b' at the end of the name to reduce the
- // chance of name collision with another field
- if (this.name) {
- var old_name = this.name.replace(/\[num\]/g, '');
- jQuery(this).attr('origName', old_name);
- this.name = this.name.replace(/\[num\]/g, '[' + num_elements + 'b]');
- }
-
- if (this.id) {
-
- var old_id = this.id;
-
- this.id = this.id.replace(/input_/g, 'input_' + num_elements + '_');
-
- // TODO: Data in sfgShowOnSelect should probably be stored in
- // jQuery("#sfForm").data('SemanticForms')
- if ( sfgShowOnSelect[ old_id ] ) {
- sfgShowOnSelect[ this.id ] = sfgShowOnSelect[ old_id ];
- }
-
- // register initialization and validation methods for new inputs
-
- var sfdata = jQuery("#sfForm").data('SemanticForms');
- if ( sfdata ) { // found data object?
- var i;
- if ( sfdata.initFunctions[old_id] ) {
-
- // For every initialization method for
- // input with id old_id, register the
- // method for the new input.
- for ( i = 0; i < sfdata.initFunctions[old_id].length; i++ ) {
-
- jQuery(this).SemanticForms_registerInputInit(
- sfdata.initFunctions[old_id][i].initFunction,
- sfdata.initFunctions[old_id][i].parameters,
- true //do not yet execute
- );
- }
- }
-
- // For every validation method for the
- // input with ID old_id, register it
- // for the new input.
- for ( i = 0; i < sfdata.validationFunctions.length; i++ ) {
-
- if ( typeof sfdata.validationFunctions[i] !== 'undefined' &&
- sfdata.validationFunctions[i].input == old_id ) {
-
- jQuery(this).SemanticForms_registerInputValidation(
- sfdata.validationFunctions[i].valfunction,
- sfdata.validationFunctions[i].parameters
- );
- }
- }
- }
- }
- }
- );
-
- new_div.find('a').attr('href', function() {
- return this.href.replace(/input_/g, 'input_' + num_elements + '_');
- });
-
- new_div.find('span').attr('id', function() {
- return this.id.replace(/span_/g, 'span_' + num_elements + '_');
- });
-
- // Add the new instance
- if ( addAboveCurInstance ) {
- new_div.insertBefore(this.closest(".multipleTemplateInstance"));
- } else {
- this.closest(".multipleTemplateWrapper")
- .find(".multipleTemplateList")
- .append(new_div);
- }
-
- new_div.initializeJSElements(true);
-
- // Initialize new inputs
- new_div.find("input, select, textarea").each(
- function() {
-
- if (this.id) {
-
- var sfdata = jQuery("#sfForm").data('SemanticForms');
- if ( sfdata ) {
-
- // have to store data array: the id attribute
- // of 'this' might be changed in the init function
- var thatData = sfdata.initFunctions[this.id] ;
-
- if ( thatData ) { // if anything registered at all
- // Call every initialization method
- // for this input
- for ( var i = 0; i < thatData.length; i++ ) {
- thatData[i].initFunction(
- this.id,
- thatData[i].parameters
- );
- }
- }
- }
- }
- }
- );
-
-};
-
-// The first argument is needed, even though it's an attribute of the element
-// on which this function is called, because it's the 'name' attribute for
-// regular inputs, and the 'origName' attribute for inputs in multiple-instance
-// templates.
-jQuery.fn.setDependentAutocompletion = function( dependentField, baseField, baseValue ) {
- var propName = sfgFieldProperties[dependentField];
- var baseProp = sfgFieldProperties[baseField];
- var myServer = mw.config.get( 'wgScriptPath' ) + "/api.php";
- myServer += "?action=sfautocomplete&format=json&property=" + propName + "&baseprop=" + baseProp + "&basevalue=" + baseValue;
- var dependentValues = [];
- var thisInput = jQuery(this);
- // We use jQuery.ajax() here instead of jQuery.getJSON() so that the
- // 'async' parameter can be set. That, in turn, is set because
- // if the 2nd, "dependent" field is a combo box, it can have weird
- // behavior: clicking on the down arrow for the combo box leads to a
- // "blur" event for the base field, which causes the possible
- // values to get recalculated, but not in time for the dropdown to
- // change values - it still shows the old values. By setting
- // "async: false", we guarantee that old values won't be shown - if
- // the values haven't been recalculated yet, the dropdown won't
- // appear at all.
- // @TODO - handle this the right way, by having special behavior for
- // the dropdown - it should get delayed until the values are
- // calculated, then appear.
- jQuery.ajax({
- url: myServer,
- dataType: 'json',
- async: false,
- success: function(data) {
- var realData = data.sfautocomplete;
- jQuery.each(realData, function(key, val) {
- dependentValues.push(val.title);
- });
- thisInput.data('autocompletevalues', dependentValues);
- thisInput.attachAutocomplete();
- }
- });
-};
-
-/**
- * Called on a 'base' field (e.g., for a country) - sets the autocompletion
- * for its 'dependent' field (e.g., for a city).
- */
-jQuery.fn.setAutocompleteForDependentField = function( partOfMultiple ) {
- var curValue = jQuery(this).val();
- if ( curValue === null ) { return this; }
-
- var nameAttr = partOfMultiple ? 'origName' : 'name';
- var name = jQuery(this).attr(nameAttr);
- var sfgDependentFields = mw.config.get( 'sfgDependentFields' );
- var dependent_on_me = [];
- for ( var i = 0; i < sfgDependentFields.length; i++ ) {
- var dependentFieldPair = sfgDependentFields[i];
- if ( dependentFieldPair[0] == name ) {
- dependent_on_me.push(dependentFieldPair[1]);
- }
- }
- dependent_on_me = jQuery.unique(dependent_on_me);
-
- var self = this;
- jQuery.each( dependent_on_me, function() {
- var dependentField = this;
- var dependent_field_element;
- if ( partOfMultiple ) {
- dependent_field_element = jQuery(self).closest(".multipleTemplateInstance")
- .find('[origName="' + dependentField + '"]');
- } else {
- dependent_field_element = jQuery('[name="' + dependentField + '"]');
- }
- var class_name = $(dependent_field_element).attr( 'class' );
- if ( class_name.indexOf( 'sfComboBox' ) != -1 ) {
- var cmbox = new sf.select2.combobox();
- cmbox.refresh(dependent_field_element);
- } else if ( class_name.indexOf( 'sfTokens' ) != -1 ) {
- var tokens = new sf.select2.tokens();
- tokens.refresh(dependent_field_element);
- } else {
- dependent_field_element.setDependentAutocompletion(dependentField, name, curValue);
- }
- });
-
-
- return this;
-};
-
-/**
- * Initialize all the JS-using elements contained within this block - can be
- * called for either the entire HTML body, or for a div representing an
- * instance of a multiple-instance template.
- */
-jQuery.fn.initializeJSElements = function( partOfMultiple ) {
- this.find(".sfShowIfSelected").each( function() {
- jQuery(this)
- .showIfSelected(true)
- .change( function() {
- jQuery(this).showIfSelected(false);
- });
- });
-
- this.find(".sfShowIfChecked").each( function() {
- jQuery(this)
- .showIfChecked(true)
- .click( function() {
- jQuery(this).showIfChecked(false);
- });
- });
-
- this.find(".sfShowIfCheckedCheckbox").each( function() {
- jQuery(this)
- .showIfCheckedCheckbox(true)
- .click( function() {
- jQuery(this).showIfCheckedCheckbox(false);
- });
- });
-
- // Enable the new remove button
- this.find(".removeButton").click( function() {
-
- // Unregister initialization and validation for deleted inputs
- jQuery(this).parentsUntil( '.multipleTemplateInstance' ).last().parent().find("input, select, textarea").each(
- function() {
- jQuery(this).SemanticForms_unregisterInputInit();
- jQuery(this).SemanticForms_unregisterInputValidation();
- }
- );
-
- // Remove the encompassing div for this instance.
- jQuery(this).closest(".multipleTemplateInstance")
- .fadeTo('fast', 0, function() {
- jQuery(this).slideUp('fast', function() {
- jQuery(this).remove();
- });
- });
- return false;
- });
-
- // ...and the new adder
- if ( partOfMultiple ) {
- this.find('.addAboveButton').click( function() {
- jQuery(this).addInstance( true );
- return false; // needed to disable <a> behavior
- });
- }
-
- this.find('.autocompleteInput').attachAutocomplete();
-
- var combobox = new sf.select2.combobox();
- this.find('.sfComboBox').not('#semantic_property_starter, .multipleTemplateStarter .sfComboBox, .select2-container').each( function() {
- combobox.apply($(this));
- });
-
- var tokens = new sf.select2.tokens();
- this.find('.sfTokens').not('.multipleTemplateStarter .sfTokens, .select2-container').each( function() {
- tokens.apply($(this));
- });
-
- this.find('.autoGrow').autoGrow();
- this.find('.sfFancyBox').fancybox({
- 'width' : '75%',
- 'height' : '75%',
- 'autoScale' : false,
- 'transitionIn' : 'none',
- 'transitionOut' : 'none',
- 'type' : 'iframe',
- 'overlayColor' : '#222',
- 'overlayOpacity' : '0.8'
- });
-
- // @TODO - this should ideally be called only for inputs that have
- // a dependent field - which might involve changing the storage of
- // "dependent fields" information from a global variable to a
- // per-input HTML attribute.
- this.find('input, select').each( function() {
- jQuery(this)
- .setAutocompleteForDependentField( partOfMultiple )
- .blur( function() {
- jQuery(this).setAutocompleteForDependentField( partOfMultiple );
- });
- });
- // The 'blur' event doesn't get triggered for radio buttons for
- // Chrome and Safari (the WebKit-based browsers) so use the 'change'
- // event in addition.
- // @TODO - blur() shuldn't be called at all for radio buttons.
- this.find('input:radio')
- .change( function() {
- jQuery(this).setAutocompleteForDependentField( partOfMultiple );
- });
-};
-
-var num_elements = 0;
-
-// Once the document has finished loading, set up everything!
-jQuery(document).ready(function() {
- jQuery('body').initializeJSElements();
-
- jQuery('.multipleTemplateInstance').initializeJSElements(true);
- jQuery('.multipleTemplateAdder').click( function() {
- jQuery(this).addInstance( false );
- });
- jQuery('.multipleTemplateList').sortable({
- axis: 'y',
- handle: '.rearrangerImage'
- });
-
-
- // If the form is submitted, validate everything!
- jQuery('#sfForm').submit( function() {return validateAll();} );
-});
diff --git a/SemanticForms/libs/ext.dynatree.js b/SemanticForms/libs/ext.dynatree.js
deleted file mode 100644
index 116b04d9..00000000
--- a/SemanticForms/libs/ext.dynatree.js
+++ /dev/null
@@ -1,52 +0,0 @@
-$(function () {
- // Attach the dynatree widget to an existing <div id="tree"> element
- // and pass the tree options as an argument to the dynatree() function:
- var nodeSelection = $("div[id*=treeinput]");
- nodeSelection.each (function (index) {
- var node = nodeSelection.eq(index);
- var selectMode = 2;
- var checkboxClass = {checkbox: "dynatree-checkbox"};
- if (node.find(":input:radio").length) {
- selectMode = 1;
- checkboxClass = {checkbox: "dynatree-radio"};
- }
-
- node.dynatree({
- checkbox: true,
- minExpandLevel: 1,
- classNames: checkboxClass,
- selectMode: selectMode,
- onClick: function (node, event) {
- var targetType = node.getEventTargetType(event);
- if ( targetType == "expander" ) {
- node.toggleExpand();
- } else if ( targetType == "checkbox" ||
- targetType == "title" ) {
- node.toggleSelect();
- }
-
- return false;
- },
- //Un/check real checkboxes recursively after selection
- onSelect: function (select, dtnode) {
- var inputkey = "chb-" + dtnode.data.key;
- $("[id='" + inputkey + "']").attr("checked", select);
- },
- //Prevent reappearing of checkbox when node is collapse
- onExpand: function (select, dtnode) {
- $("#chb-" + dtnode.data.key).attr("checked",
- dtnode.isSelected()).addClass("hidden");
- }
- });
- //Update real checkboxes according to selections
- $.map(node.dynatree("getTree").getSelectedNodes(),
- function (dtnode) {
- $("#chb-" + dtnode.data.key).attr("checked", true);
- dtnode.activate();
- });
- var activeNode = node.dynatree("getTree").getActiveNode();
- if (activeNode !== null) {
- activeNode.deactivate();
- }
- });
-});
diff --git a/SemanticForms/libs/ext.sf.js b/SemanticForms/libs/ext.sf.js
deleted file mode 100644
index 5a75217f..00000000
--- a/SemanticForms/libs/ext.sf.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-* ext.sf.js
-*
-* @file
-*
-*
-* @licence GNU GPL v2+
-* @author Jatin Mehta
-*
-*/
-
-var sf = ( function ( $, undefined ) {
- 'use strict';
- /**
- *
- * Declares methods and properties that are available through the sf namespace
- *
- * @class sf
- * @alternateClassName semanticforms
- * @singleton
- */
- return {
-
- };
-} )( jQuery );
-
-//Assinging namespace
-window.sf = window.semanticforms = sf; \ No newline at end of file
diff --git a/SemanticForms/libs/ext.sf.select2.base.js b/SemanticForms/libs/ext.sf.select2.base.js
deleted file mode 100644
index 0a9c5900..00000000
--- a/SemanticForms/libs/ext.sf.select2.base.js
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
-* ext.sf.select2.base.js
-*
-* Base class to handle autocomplete
-* for various input types using Select2 JS library
-*
-* @file
-*
-*
-* @licence GNU GPL v2+
-* @author Jatin Mehta
-*
-*/
-
-( function ( $, mw, sf ) {
- 'use strict';
- /**
- * Inheritance class for the sf.select2 constructor
- *
- *
- * @class
- */
- sf.select2 = sf.select2 || {};
-
- /**
- * Class constructor
- *
- *
- * @class
- * @constructor
- */
- sf.select2.base = function() {
-
- };
-
- sf.select2.base.prototype = {
- /*
- * Applies select2 to the HTML element
- *
- * @param {HTMLElement} element
- *
- */
- apply: function( element ) {
- this.id = element.attr( "id" );
- var opts = this.setOptions();
-
- element.select2(opts);
- element.on( "change", this.onChange );
- },
- /*
- * Used to remove the select2 applied to the HTML element,
- * the selected value will remain preserved.
- *
- * @param {HTMLElement} element
- *
- */
- destroy: function( element ) {
- element.select2( "destroy" );
- },
- /*
- * Returns HTML text to be used by select2 for
- * showing remote data retrieved
- *
- * @param {object} value
- * @param {object} container
- * @param {object} query
- *
- * @return {string} markup
- *
- */
- formatResult: function(value, container, query) {
- var term = query.term;
- var text = value.text;
- var image = value.image;
- var description = value.description;
- var markup = "";
-
- var text_highlight = sf.select2.base.prototype.textHighlight;
- if ( text !== undefined && image !== undefined && description !== undefined ) {
- markup += "<table class='sf-select2-result'> <tr>";
- markup += "<td class='sf-result-thumbnail'><img src='" + image + "'/></td>";
- markup += "<td class='sf-result-info'><div class='sf-result-title'>" + text_highlight(text, term) + "</div>";
- markup += "<div class='sf-result-description'>" + description + "</div>";
- markup += "</td></tr></table>";
- } else if ( text !== undefined && image !== undefined ) {
- markup += "<img class='sf-icon' src='"+ image +"'/>" + text_highlight(text, term);
- } else if ( text !== undefined && description !== undefined ) {
- markup += "<table class='sf-select2-result'> <tr>";
- markup += "<td class='sf-result-info'><div class='sf-result-title'>" + text_highlight(text, term) + "</div>";
- markup += "<div class='sf-result-description'>" + description + "</div>";
- markup += "</td></tr></table>";
- } else {
- markup += text_highlight(text, term);
- }
-
- return markup;
- },
- /*
- * Returns string/HTML text to be used by select2 to
- * show selection
- *
- * @param {object} value (The selected result object)
- *
- * @return {string}
- *
- */
- formatSelection: function(value) {
- return value.text;
- },
- /*
- * If a field is dependent on some other field in the form
- * then it returns its name.
- *
- * @return {string}
- *
- */
- dependentOn: function() {
- var input_id = "#" + this.id;
- var name_attr = this.nameAttr( $(input_id) );
- var name = $(input_id).attr( name_attr );
-
- var sfgDependentFields = mw.config.get( 'sfgDependentFields' );
- for ( var i = 0; i < sfgDependentFields.length; i++ ) {
- var dependentFieldPair = sfgDependentFields[i];
- if ( dependentFieldPair[1] == name ) {
- return dependentFieldPair[0];
- }
- }
- return null;
- },
- /*
- * Returns the array of names of fields in the form which are dependent
- * on the field passed as a param to this function,
- *
- * @param {HTMLElement} element
- *
- * @return {associative array} dependent_on_me
- *
- */
- dependentOnMe: function( element ) {
- var name_attr = this.nameAttr(element);
- var name = element.attr( name_attr );
- var dependent_on_me = [];
-
- var sfgDependentFields = mw.config.get( 'sfgDependentFields' );
- for ( var i = 0; i < sfgDependentFields.length; i++ ) {
- var dependentFieldPair = sfgDependentFields[i];
- if ( dependentFieldPair[0] == name ) {
- dependent_on_me.push(dependentFieldPair[1]);
- }
- }
-
- return dependent_on_me;
- },
- /*
- * Returns the name attribute of the field depending on
- * whether it is a part of multiple instance template or not
- *
- * @param {HTMLElement} element
- *
- * @return {string}
- *
- */
- nameAttr: function( element ) {
- return this.partOfMultiple( element ) ? "origname" : "name";
- },
- /*
- * Checks whether the field is part of multiple instance template or not
- *
- * @param {HTMLElement} element
- *
- * @return {boolean}
- *
- */
- partOfMultiple: function( element ) {
- return element.attr( "origname" ) !== undefined ? true : false;
- },
- /*
- * Gives dependent field options which include
- * property, base property and base value
- *
- * @param {string} dep_on
- *
- * @return {object} dep_field_opts
- *
- */
- getDependentFieldOpts: function( dep_on ) {
- var input_id = "#" + this.id;
- var dep_field_opts = {};
- var base_element;
- if ( this.partOfMultiple($(input_id)) ) {
- base_element = $(input_id).closest( ".multipleTemplateInstance" )
- .find( '[origname ="' + dep_on + '" ]' );
- } else {
- base_element = $('[name ="' + dep_on + '" ]');
- }
- dep_field_opts.base_value = base_element.val();
- dep_field_opts.base_prop = base_element.attr( "autocompletesettings" );
- dep_field_opts.prop = $(input_id).attr( "autocompletesettings" ).split( "," )[0];
-
- return dep_field_opts;
- },
- /*
- * Gives autocomplete options for a field
- *
- *
- * @return {object} autocomplete_opts
- *
- */
- getAutocompleteOpts: function() {
- var input_id = "#" + this.id;
- var autocomplete_opts = {};
- autocomplete_opts.autocompletedatatype = $(input_id).attr( "autocompletedatatype" );
- autocomplete_opts.autocompletesettings = $(input_id).attr( "autocompletesettings" );
-
- return autocomplete_opts;
- },
- /*
- * Refreshes the field if there is a change
- * in the autocomplete vlaues
- *
- * @param {HTMLElement} element
- *
- */
- refresh: function( element ) {
- this.destroy($(element));
- this.apply($(element));
- },
- /*
- * Removes diacritics from the string and replaces
- * them with english characters.
- * This code is basically copied from:
- * http://jsfiddle.net/potherca/Gtmr2/
- *
- * @param {string} text
- *
- * @return {string}
- *
- */
- removeDiacritics: function( text ) {
- var diacriticsMap = { 'Á': 'A', 'Ă': 'A', 'Ắ': 'A', 'Ặ': 'A', 'Ằ': 'A', 'Ẳ': 'A', 'Ẵ': 'A', 'Ǎ': 'A', 'Â': 'A', 'Ấ': 'A', 'Ậ': 'A', 'Ầ': 'A', 'Ẩ': 'A', 'Ẫ': 'A', 'Ä': 'A', 'Ǟ': 'A', 'Ȧ': 'A', 'Ǡ': 'A', 'Ạ': 'A', 'Ȁ': 'A', 'À': 'A', 'Ả': 'A', 'Ȃ': 'A', 'Ā': 'A', 'Ą': 'A', 'Å': 'A', 'Ǻ': 'A', 'Ḁ': 'A', 'Ⱥ': 'A', 'Ã': 'A', 'Ꜳ': 'AA', 'Æ': 'AE', 'Ǽ': 'AE', 'Ǣ': 'AE', 'Ꜵ': 'AO', 'Ꜷ': 'AU', 'Ꜹ': 'AV', 'Ꜻ': 'AV', 'Ꜽ': 'AY', 'Ḃ': 'B', 'Ḅ': 'B', 'Ɓ': 'B', 'Ḇ': 'B', 'Ƀ': 'B', 'Ƃ': 'B', 'Ć': 'C', 'Č': 'C', 'Ç': 'C', 'Ḉ': 'C', 'Ĉ': 'C', 'Ċ': 'C', 'Ƈ': 'C', 'Ȼ': 'C', 'Ď': 'D', 'Ḑ': 'D', 'Ḓ': 'D', 'Ḋ': 'D', 'Ḍ': 'D', 'Ɗ': 'D', 'Ḏ': 'D', 'Dz': 'D', 'Dž': 'D', 'Đ': 'D', 'Ƌ': 'D', 'DZ': 'DZ', 'DŽ': 'DZ', 'É': 'E', 'Ĕ': 'E', 'Ě': 'E', 'Ȩ': 'E', 'Ḝ': 'E', 'Ê': 'E', 'Ế': 'E', 'Ệ': 'E', 'Ề': 'E', 'Ể': 'E', 'Ễ': 'E', 'Ḙ': 'E', 'Ë': 'E', 'Ė': 'E', 'Ẹ': 'E', 'Ȅ': 'E', 'È': 'E', 'Ẻ': 'E', 'Ȇ': 'E', 'Ē': 'E', 'Ḗ': 'E', 'Ḕ': 'E', 'Ę': 'E', 'Ɇ': 'E', 'Ẽ': 'E', 'Ḛ': 'E', 'Ꝫ': 'ET', 'Ḟ': 'F', 'Ƒ': 'F', 'Ǵ': 'G', 'Ğ': 'G', 'Ǧ': 'G', 'Ģ': 'G', 'Ĝ': 'G', 'Ġ': 'G', 'Ɠ': 'G', 'Ḡ': 'G', 'Ǥ': 'G', 'Ḫ': 'H', 'Ȟ': 'H', 'Ḩ': 'H', 'Ĥ': 'H', 'Ⱨ': 'H', 'Ḧ': 'H', 'Ḣ': 'H', 'Ḥ': 'H', 'Ħ': 'H', 'Í': 'I', 'Ĭ': 'I', 'Ǐ': 'I', 'Î': 'I', 'Ï': 'I', 'Ḯ': 'I', 'İ': 'I', 'Ị': 'I', 'Ȉ': 'I', 'Ì': 'I', 'Ỉ': 'I', 'Ȋ': 'I', 'Ī': 'I', 'Į': 'I', 'Ɨ': 'I', 'Ĩ': 'I', 'Ḭ': 'I', 'Ꝺ': 'D', 'Ꝼ': 'F', 'Ᵹ': 'G', 'Ꞃ': 'R', 'Ꞅ': 'S', 'Ꞇ': 'T', 'Ꝭ': 'IS', 'Ĵ': 'J', 'Ɉ': 'J', 'Ḱ': 'K', 'Ǩ': 'K', 'Ķ': 'K', 'Ⱪ': 'K', 'Ꝃ': 'K', 'Ḳ': 'K', 'Ƙ': 'K', 'Ḵ': 'K', 'Ꝁ': 'K', 'Ꝅ': 'K', 'Ĺ': 'L', 'Ƚ': 'L', 'Ľ': 'L', 'Ļ': 'L', 'Ḽ': 'L', 'Ḷ': 'L', 'Ḹ': 'L', 'Ⱡ': 'L', 'Ꝉ': 'L', 'Ḻ': 'L', 'Ŀ': 'L', 'Ɫ': 'L', 'Lj': 'L', 'Ł': 'L', 'LJ': 'LJ', 'Ḿ': 'M', 'Ṁ': 'M', 'Ṃ': 'M', 'Ɱ': 'M', 'Ń': 'N', 'Ň': 'N', 'Ņ': 'N', 'Ṋ': 'N', 'Ṅ': 'N', 'Ṇ': 'N', 'Ǹ': 'N', 'Ɲ': 'N', 'Ṉ': 'N', 'Ƞ': 'N', 'Nj': 'N', 'Ñ': 'N', 'NJ': 'NJ', 'Ó': 'O', 'Ŏ': 'O', 'Ǒ': 'O', 'Ô': 'O', 'Ố': 'O', 'Ộ': 'O', 'Ồ': 'O', 'Ổ': 'O', 'Ỗ': 'O', 'Ö': 'O', 'Ȫ': 'O', 'Ȯ': 'O', 'Ȱ': 'O', 'Ọ': 'O', 'Ő': 'O', 'Ȍ': 'O', 'Ò': 'O', 'Ỏ': 'O', 'Ơ': 'O', 'Ớ': 'O', 'Ợ': 'O', 'Ờ': 'O', 'Ở': 'O', 'Ỡ': 'O', 'Ȏ': 'O', 'Ꝋ': 'O', 'Ꝍ': 'O', 'Ō': 'O', 'Ṓ': 'O', 'Ṑ': 'O', 'Ɵ': 'O', 'Ǫ': 'O', 'Ǭ': 'O', 'Ø': 'O', 'Ǿ': 'O', 'Õ': 'O', 'Ṍ': 'O', 'Ṏ': 'O', 'Ȭ': 'O', 'Ƣ': 'OI', 'Ꝏ': 'OO', 'Ɛ': 'E', 'Ɔ': 'O', 'Ȣ': 'OU', 'Ṕ': 'P', 'Ṗ': 'P', 'Ꝓ': 'P', 'Ƥ': 'P', 'Ꝕ': 'P', 'Ᵽ': 'P', 'Ꝑ': 'P', 'Ꝙ': 'Q', 'Ꝗ': 'Q', 'Ŕ': 'R', 'Ř': 'R', 'Ŗ': 'R', 'Ṙ': 'R', 'Ṛ': 'R', 'Ṝ': 'R', 'Ȑ': 'R', 'Ȓ': 'R', 'Ṟ': 'R', 'Ɍ': 'R', 'Ɽ': 'R', 'Ꜿ': 'C', 'Ǝ': 'E', 'Ś': 'S', 'Ṥ': 'S', 'Š': 'S', 'Ṧ': 'S', 'Ş': 'S', 'Ŝ': 'S', 'Ș': 'S', 'Ṡ': 'S', 'Ṣ': 'S', 'Ṩ': 'S', 'ẞ': 'SS', 'Ť': 'T', 'Ţ': 'T', 'Ṱ': 'T', 'Ț': 'T', 'Ⱦ': 'T', 'Ṫ': 'T', 'Ṭ': 'T', 'Ƭ': 'T', 'Ṯ': 'T', 'Ʈ': 'T', 'Ŧ': 'T', 'Ɐ': 'A', 'Ꞁ': 'L', 'Ɯ': 'M', 'Ʌ': 'V', 'Ꜩ': 'TZ', 'Ú': 'U', 'Ŭ': 'U', 'Ǔ': 'U', 'Û': 'U', 'Ṷ': 'U', 'Ü': 'U', 'Ǘ': 'U', 'Ǚ': 'U', 'Ǜ': 'U', 'Ǖ': 'U', 'Ṳ': 'U', 'Ụ': 'U', 'Ű': 'U', 'Ȕ': 'U', 'Ù': 'U', 'Ủ': 'U', 'Ư': 'U', 'Ứ': 'U', 'Ự': 'U', 'Ừ': 'U', 'Ử': 'U', 'Ữ': 'U', 'Ȗ': 'U', 'Ū': 'U', 'Ṻ': 'U', 'Ų': 'U', 'Ů': 'U', 'Ũ': 'U', 'Ṹ': 'U', 'Ṵ': 'U', 'Ꝟ': 'V', 'Ṿ': 'V', 'Ʋ': 'V', 'Ṽ': 'V', 'Ꝡ': 'VY', 'Ẃ': 'W', 'Ŵ': 'W', 'Ẅ': 'W', 'Ẇ': 'W', 'Ẉ': 'W', 'Ẁ': 'W', 'Ⱳ': 'W', 'Ẍ': 'X', 'Ẋ': 'X', 'Ý': 'Y', 'Ŷ': 'Y', 'Ÿ': 'Y', 'Ẏ': 'Y', 'Ỵ': 'Y', 'Ỳ': 'Y', 'Ƴ': 'Y', 'Ỷ': 'Y', 'Ỿ': 'Y', 'Ȳ': 'Y', 'Ɏ': 'Y', 'Ỹ': 'Y', 'Ź': 'Z', 'Ž': 'Z', 'Ẑ': 'Z', 'Ⱬ': 'Z', 'Ż': 'Z', 'Ẓ': 'Z', 'Ȥ': 'Z', 'Ẕ': 'Z', 'Ƶ': 'Z', 'IJ': 'IJ', 'Œ': 'OE', 'ᴀ': 'A', 'ᴁ': 'AE', 'ʙ': 'B', 'ᴃ': 'B', 'ᴄ': 'C', 'ᴅ': 'D', 'ᴇ': 'E', 'ꜰ': 'F', 'ɢ': 'G', 'ʛ': 'G', 'ʜ': 'H', 'ɪ': 'I', 'ʁ': 'R', 'ᴊ': 'J', 'ᴋ': 'K', 'ʟ': 'L', 'ᴌ': 'L', 'ᴍ': 'M', 'ɴ': 'N', 'ᴏ': 'O', 'ɶ': 'OE', 'ᴐ': 'O', 'ᴕ': 'OU', 'ᴘ': 'P', 'ʀ': 'R', 'ᴎ': 'N', 'ᴙ': 'R', 'ꜱ': 'S', 'ᴛ': 'T', 'ⱻ': 'E', 'ᴚ': 'R', 'ᴜ': 'U', 'ᴠ': 'V', 'ᴡ': 'W', 'ʏ': 'Y', 'ᴢ': 'Z', 'á': 'a', 'ă': 'a', 'ắ': 'a', 'ặ': 'a', 'ằ': 'a', 'ẳ': 'a', 'ẵ': 'a', 'ǎ': 'a', 'â': 'a', 'ấ': 'a', 'ậ': 'a', 'ầ': 'a', 'ẩ': 'a', 'ẫ': 'a', 'ä': 'a', 'ǟ': 'a', 'ȧ': 'a', 'ǡ': 'a', 'ạ': 'a', 'ȁ': 'a', 'à': 'a', 'ả': 'a', 'ȃ': 'a', 'ā': 'a', 'ą': 'a', 'ᶏ': 'a', 'ẚ': 'a', 'å': 'a', 'ǻ': 'a', 'ḁ': 'a', 'ⱥ': 'a', 'ã': 'a', 'ꜳ': 'aa', 'æ': 'ae', 'ǽ': 'ae', 'ǣ': 'ae', 'ꜵ': 'ao', 'ꜷ': 'au', 'ꜹ': 'av', 'ꜻ': 'av', 'ꜽ': 'ay', 'ḃ': 'b', 'ḅ': 'b', 'ɓ': 'b', 'ḇ': 'b', 'ᵬ': 'b', 'ᶀ': 'b', 'ƀ': 'b', 'ƃ': 'b', 'ɵ': 'o', 'ć': 'c', 'č': 'c', 'ç': 'c', 'ḉ': 'c', 'ĉ': 'c', 'ɕ': 'c', 'ċ': 'c', 'ƈ': 'c', 'ȼ': 'c', 'ď': 'd', 'ḑ': 'd', 'ḓ': 'd', 'ȡ': 'd', 'ḋ': 'd', 'ḍ': 'd', 'ɗ': 'd', 'ᶑ': 'd', 'ḏ': 'd', 'ᵭ': 'd', 'ᶁ': 'd', 'đ': 'd', 'ɖ': 'd', 'ƌ': 'd', 'ı': 'i', 'ȷ': 'j', 'ɟ': 'j', 'ʄ': 'j', 'dz': 'dz', 'dž': 'dz', 'é': 'e', 'ĕ': 'e', 'ě': 'e', 'ȩ': 'e', 'ḝ': 'e', 'ê': 'e', 'ế': 'e', 'ệ': 'e', 'ề': 'e', 'ể': 'e', 'ễ': 'e', 'ḙ': 'e', 'ë': 'e', 'ė': 'e', 'ẹ': 'e', 'ȅ': 'e', 'è': 'e', 'ẻ': 'e', 'ȇ': 'e', 'ē': 'e', 'ḗ': 'e', 'ḕ': 'e', 'ⱸ': 'e', 'ę': 'e', 'ᶒ': 'e', 'ɇ': 'e', 'ẽ': 'e', 'ḛ': 'e', 'ꝫ': 'et', 'ḟ': 'f', 'ƒ': 'f', 'ᵮ': 'f', 'ᶂ': 'f', 'ǵ': 'g', 'ğ': 'g', 'ǧ': 'g', 'ģ': 'g', 'ĝ': 'g', 'ġ': 'g', 'ɠ': 'g', 'ḡ': 'g', 'ᶃ': 'g', 'ǥ': 'g', 'ḫ': 'h', 'ȟ': 'h', 'ḩ': 'h', 'ĥ': 'h', 'ⱨ': 'h', 'ḧ': 'h', 'ḣ': 'h', 'ḥ': 'h', 'ɦ': 'h', 'ẖ': 'h', 'ħ': 'h', 'ƕ': 'hv', 'í': 'i', 'ĭ': 'i', 'ǐ': 'i', 'î': 'i', 'ï': 'i', 'ḯ': 'i', 'ị': 'i', 'ȉ': 'i', 'ì': 'i', 'ỉ': 'i', 'ȋ': 'i', 'ī': 'i', 'į': 'i', 'ᶖ': 'i', 'ɨ': 'i', 'ĩ': 'i', 'ḭ': 'i', 'ꝺ': 'd', 'ꝼ': 'f', 'ᵹ': 'g', 'ꞃ': 'r', 'ꞅ': 's', 'ꞇ': 't', 'ꝭ': 'is', 'ǰ': 'j', 'ĵ': 'j', 'ʝ': 'j', 'ɉ': 'j', 'ḱ': 'k', 'ǩ': 'k', 'ķ': 'k', 'ⱪ': 'k', 'ꝃ': 'k', 'ḳ': 'k', 'ƙ': 'k', 'ḵ': 'k', 'ᶄ': 'k', 'ꝁ': 'k', 'ꝅ': 'k', 'ĺ': 'l', 'ƚ': 'l', 'ɬ': 'l', 'ľ': 'l', 'ļ': 'l', 'ḽ': 'l', 'ȴ': 'l', 'ḷ': 'l', 'ḹ': 'l', 'ⱡ': 'l', 'ꝉ': 'l', 'ḻ': 'l', 'ŀ': 'l', 'ɫ': 'l', 'ᶅ': 'l', 'ɭ': 'l', 'ł': 'l', 'lj': 'lj', 'ſ': 's', 'ẜ': 's', 'ẛ': 's', 'ẝ': 's', 'ḿ': 'm', 'ṁ': 'm', 'ṃ': 'm', 'ɱ': 'm', 'ᵯ': 'm', 'ᶆ': 'm', 'ń': 'n', 'ň': 'n', 'ņ': 'n', 'ṋ': 'n', 'ȵ': 'n', 'ṅ': 'n', 'ṇ': 'n', 'ǹ': 'n', 'ɲ': 'n', 'ṉ': 'n', 'ƞ': 'n', 'ᵰ': 'n', 'ᶇ': 'n', 'ɳ': 'n', 'ñ': 'n', 'nj': 'nj', 'ó': 'o', 'ŏ': 'o', 'ǒ': 'o', 'ô': 'o', 'ố': 'o', 'ộ': 'o', 'ồ': 'o', 'ổ': 'o', 'ỗ': 'o', 'ö': 'o', 'ȫ': 'o', 'ȯ': 'o', 'ȱ': 'o', 'ọ': 'o', 'ő': 'o', 'ȍ': 'o', 'ò': 'o', 'ỏ': 'o', 'ơ': 'o', 'ớ': 'o', 'ợ': 'o', 'ờ': 'o', 'ở': 'o', 'ỡ': 'o', 'ȏ': 'o', 'ꝋ': 'o', 'ꝍ': 'o', 'ⱺ': 'o', 'ō': 'o', 'ṓ': 'o', 'ṑ': 'o', 'ǫ': 'o', 'ǭ': 'o', 'ø': 'o', 'ǿ': 'o', 'õ': 'o', 'ṍ': 'o', 'ṏ': 'o', 'ȭ': 'o', 'ƣ': 'oi', 'ꝏ': 'oo', 'ɛ': 'e', 'ᶓ': 'e', 'ɔ': 'o', 'ᶗ': 'o', 'ȣ': 'ou', 'ṕ': 'p', 'ṗ': 'p', 'ꝓ': 'p', 'ƥ': 'p', 'ᵱ': 'p', 'ᶈ': 'p', 'ꝕ': 'p', 'ᵽ': 'p', 'ꝑ': 'p', 'ꝙ': 'q', 'ʠ': 'q', 'ɋ': 'q', 'ꝗ': 'q', 'ŕ': 'r', 'ř': 'r', 'ŗ': 'r', 'ṙ': 'r', 'ṛ': 'r', 'ṝ': 'r', 'ȑ': 'r', 'ɾ': 'r', 'ᵳ': 'r', 'ȓ': 'r', 'ṟ': 'r', 'ɼ': 'r', 'ᵲ': 'r', 'ᶉ': 'r', 'ɍ': 'r', 'ɽ': 'r', 'ↄ': 'c', 'ꜿ': 'c', 'ɘ': 'e', 'ɿ': 'r', 'ś': 's', 'ṥ': 's', 'š': 's', 'ṧ': 's', 'ş': 's', 'ŝ': 's', 'ș': 's', 'ṡ': 's', 'ṣ': 's', 'ṩ': 's', 'ʂ': 's', 'ᵴ': 's', 'ᶊ': 's', 'ȿ': 's', 'ß': 'ss', 'ɡ': 'g', 'ᴑ': 'o', 'ᴓ': 'o', 'ᴝ': 'u', 'ť': 't', 'ţ': 't', 'ṱ': 't', 'ț': 't', 'ȶ': 't', 'ẗ': 't', 'ⱦ': 't', 'ṫ': 't', 'ṭ': 't', 'ƭ': 't', 'ṯ': 't', 'ᵵ': 't', 'ƫ': 't', 'ʈ': 't', 'ŧ': 't', 'ᵺ': 'th', 'ɐ': 'a', 'ᴂ': 'ae', 'ǝ': 'e', 'ᵷ': 'g', 'ɥ': 'h', 'ʮ': 'h', 'ʯ': 'h', 'ᴉ': 'i', 'ʞ': 'k', 'ꞁ': 'l', 'ɯ': 'm', 'ɰ': 'm', 'ᴔ': 'oe', 'ɹ': 'r', 'ɻ': 'r', 'ɺ': 'r', 'ⱹ': 'r', 'ʇ': 't', 'ʌ': 'v', 'ʍ': 'w', 'ʎ': 'y', 'ꜩ': 'tz', 'ú': 'u', 'ŭ': 'u', 'ǔ': 'u', 'û': 'u', 'ṷ': 'u', 'ü': 'u', 'ǘ': 'u', 'ǚ': 'u', 'ǜ': 'u', 'ǖ': 'u', 'ṳ': 'u', 'ụ': 'u', 'ű': 'u', 'ȕ': 'u', 'ù': 'u', 'ủ': 'u', 'ư': 'u', 'ứ': 'u', 'ự': 'u', 'ừ': 'u', 'ử': 'u', 'ữ': 'u', 'ȗ': 'u', 'ū': 'u', 'ṻ': 'u', 'ų': 'u', 'ᶙ': 'u', 'ů': 'u', 'ũ': 'u', 'ṹ': 'u', 'ṵ': 'u', 'ᵫ': 'ue', 'ꝸ': 'um', 'ⱴ': 'v', 'ꝟ': 'v', 'ṿ': 'v', 'ʋ': 'v', 'ᶌ': 'v', 'ⱱ': 'v', 'ṽ': 'v', 'ꝡ': 'vy', 'ẃ': 'w', 'ŵ': 'w', 'ẅ': 'w', 'ẇ': 'w', 'ẉ': 'w', 'ẁ': 'w', 'ⱳ': 'w', 'ẘ': 'w', 'ẍ': 'x', 'ẋ': 'x', 'ᶍ': 'x', 'ý': 'y', 'ŷ': 'y', 'ÿ': 'y', 'ẏ': 'y', 'ỵ': 'y', 'ỳ': 'y', 'ƴ': 'y', 'ỷ': 'y', 'ỿ': 'y', 'ȳ': 'y', 'ẙ': 'y', 'ɏ': 'y', 'ỹ': 'y', 'ź': 'z', 'ž': 'z', 'ẑ': 'z', 'ʑ': 'z', 'ⱬ': 'z', 'ż': 'z', 'ẓ': 'z', 'ȥ': 'z', 'ẕ': 'z', 'ᵶ': 'z', 'ᶎ': 'z', 'ʐ': 'z', 'ƶ': 'z', 'ɀ': 'z', 'ff': 'ff', 'ffi': 'ffi', 'ffl': 'ffl', 'fi': 'fi', 'fl': 'fl', 'ij': 'ij', 'œ': 'oe', 'st': 'st', 'ₐ': 'a', 'ₑ': 'e', 'ᵢ': 'i', 'ⱼ': 'j', 'ₒ': 'o', 'ᵣ': 'r', 'ᵤ': 'u', 'ᵥ': 'v', 'ₓ': 'x' };
-
- return text.replace(/[\u007F-\uFFFF]/g, function(key) {
- return diacriticsMap[key] || key;
- });
- },
- textHighlight: function( text, term ) {
- var markup = "";
- var remove_diacritics = sf.select2.base.prototype.removeDiacritics;
- var no_diac_text = remove_diacritics(text);
- var start = no_diac_text.toUpperCase().indexOf(term.toUpperCase());
- if (start !== 0 && !mw.config.get( 'sfgAutocompleteOnAllChars' )) {
- start = no_diac_text.toUpperCase().indexOf(" " + term.toUpperCase());
- if ( start != -1 ) {
- start = start + 1;
- }
- }
- if ( start != -1 ) {
- markup += text.substr(0, start) +
- '<span class="select2-match">' +
- text.substr(start,term.length) +
- '</span>' +
- text.substr(start + term.length, text.length);
- } else {
- markup += text;
- }
-
- return markup;
- },
- };
-} )( jQuery, mediaWiki, semanticforms ); \ No newline at end of file
diff --git a/SemanticForms/libs/ext.sf.select2.combobox.js b/SemanticForms/libs/ext.sf.select2.combobox.js
deleted file mode 100644
index cccfab9d..00000000
--- a/SemanticForms/libs/ext.sf.select2.combobox.js
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * ext.sf.select2.comboboxjs
- *
- * Javascript utility class to handle autocomplete
- * for combobox input type using Select2 JS library
- *
- * @file
- *
- * @licence GNU GPL v2+
- * @author Jatin Mehta
- */
-
-( function( $, mw, sf ) {
- 'use strict';
-
- /**
- * Inheritance class for the sf.select2 constructor
- *
- *
- * @class
- */
- sf.select2 = sf.select2 || {};
-
- /**
- * Class constructor
- *
- *
- * @class
- * @constructor
- */
- sf.select2.combobox = function() {
-
- };
-
- var combobox_proto = new sf.select2.base();
-
- /*
- * Returns options to be set by select2
- *
- * @return {object} opts
- *
- */
- combobox_proto.setOptions = function() {
- var input_id = this.id;
- var opts = {};
- input_id = "#" + input_id;
- var input_tagname = $(input_id).prop( "tagName" );
- var autocomplete_opts = this.getAutocompleteOpts();
-
- if ( autocomplete_opts.autocompletedatatype !== undefined ) {
- opts.ajax = this.getAjaxOpts();
- opts.minimumInputLength = 1;
- opts.formatInputTooShort = mw.msg( "sf-select2-input-too-short", opts.minimumInputLength );
- opts.formatSelection = this.formatSelection;
- opts.escapeMarkup = function (m) { return m; };
- } else if ( input_tagname == "INPUT" ) {
- opts.data = this.getData( autocomplete_opts.autocompletesettings );
- }
- var sfgAutocompleteOnAllChars = mw.config.get( 'sfgAutocompleteOnAllChars' );
- if ( !sfgAutocompleteOnAllChars ) {
- opts.matcher = function( term, text ) {
- var no_diac_text = sf.select2.base.prototype.removeDiacritics( text );
- var position = no_diac_text.toUpperCase().indexOf(term.toUpperCase());
- var position_with_space = no_diac_text.toUpperCase().indexOf(" " + term.toUpperCase());
- if ( (position != -1 && position === 0 ) || position_with_space != -1 ) {
- return true;
- } else {
- return false;
- }
- };
- }
- opts.formatResult = this.formatResult;
- opts.formatSearching = mw.msg( "sf-select2-searching" );
- opts.formatNoMatches = mw.msg( "sf-select2-no-matches" );
- opts.placeholder = $(input_id).attr( "placeholder" );
- if ( $(input_id).attr( "existingvaluesonly" ) !== "true" && input_tagname == "INPUT" ) {
- opts.createSearchChoice = function( term, data ) { if ( $(data).filter(function() { return this.text.localeCompare( term )===0; }).length===0 ) {return { id:term, text:term };} };
- }
- if ( $(input_id).val() !== "" && input_tagname == "INPUT" ) {
- opts.initSelection = function ( element, callback ) { var data = {id: element.val(), text: element.val()}; callback(data); };
- }
- opts.allowClear = true;
- var size = $(input_id).attr("size");
- if ( size === undefined ) {
- size = 35; //default value
- }
- opts.containerCss = { 'min-width': size * 6 };
- opts.containerCssClass = 'sf-select2-container';
- opts.dropdownCssClass = 'sf-select2-dropdown';
-
- return opts;
- };
- /*
- * Returns data to be used by select2 for combobox autocompletion
- *
- * @param {string} autocompletesettings
- * @return {associative array} values
- *
- */
- combobox_proto.getData = function( autocompletesettings ) {
- var input_id = "#" + this.id;
- var values = [{id: 0, text: ""}];
- var dep_on = this.dependentOn();
- var i, data;
- if ( dep_on === null ) {
- if ( autocompletesettings == 'external data' ) {
- var name = $(input_id).attr(this.nameAttr($(input_id)));
- var sfgEDSettings = mw.config.get( 'sfgEDSettings' );
- var edgValues = mw.config.get( 'edgValues' );
- data = {};
- if ( sfgEDSettings[name].title !== undefined && sfgEDSettings[name].title !== "" ) {
- data.title = edgValues[sfgEDSettings[name].title];
- i = 0;
- if ( data.title !== undefined && data.title !== null ) {
- data.title.forEach(function() {
- values.push({
- id: i + 1, text: data.title[i]
- });
- i++;
- });
- }
- if ( sfgEDSettings[name].image !== undefined && sfgEDSettings[name].image !== "" ) {
- data.image = edgValues[sfgEDSettings[name].image];
- i = 0;
- if ( data.image !== undefined && data.image !== null ) {
- data.image.forEach(function() {
- values[i+1].image = data.image[i];
- i++;
- });
- }
- }
- if ( sfgEDSettings[name].description !== undefined && sfgEDSettings[name].description !== "" ) {
- data.description = edgValues[sfgEDSettings[name].description];
- i = 0;
- if ( data.description !== undefined && data.description !== null ) {
- data.description.forEach(function() {
- values[i+1].description = data.description[i];
- i++;
- });
- }
- }
- }
-
- } else {
- var sfgAutocompleteValues = mw.config.get( 'sfgAutocompleteValues' );
- data = sfgAutocompleteValues[autocompletesettings];
- i = 0;
- //Convert data into the format accepted by Select2
- if (data !== undefined && data !== null ) {
- data.forEach(function()
- {
- values.push({
- id: i + 1, text: data[i]
- });
- i++;
- });
- }
- }
- } else { //Dependent field autocompletion
- var dep_field_opts = this.getDependentFieldOpts( dep_on );
- var my_server = mw.config.get( 'wgScriptPath' ) + "/api.php";
- my_server += "?action=sfautocomplete&format=json&property=" + dep_field_opts.prop + "&baseprop=" + dep_field_opts.base_prop + "&basevalue=" + dep_field_opts.base_value;
- $.ajax({
- url: my_server,
- dataType: 'json',
- async: false,
- success: function(data) {
- var id = 1;
- //Convert data into the format accepted by Select2
- data.sfautocomplete.forEach( function(item) {
- values.push({
- id: id++, text: item.title
- });
- });
- return values;
- }
- });
- }
-
- return values;
- };
- /*
- * Returns ajax options to be used by select2 for
- * remote autocompletion of combobox
- *
- * @return {object} ajaxOpts
- *
- */
- combobox_proto.getAjaxOpts = function() {
- var autocomplete_opts = this.getAutocompleteOpts();
- var my_server = mw.util.wikiScript( 'api' );
- my_server += "?action=sfautocomplete&format=json&" + autocomplete_opts.autocompletedatatype + "=" + autocomplete_opts.autocompletesettings;
-
- var ajaxOpts = {
- url: my_server,
- dataType: 'json',
- data: function (term) {
- return {
- substr: term, // search term
- };
- },
- results: function (data, page, query) { // parse the results into the format expected by Select2.
- var id = 0;
- if (data.sfautocomplete !== undefined) {
- data.sfautocomplete.forEach( function(item) {
- item.id = id++;
- item.text = item.title;
- });
- return {results: data.sfautocomplete};
- } else {
- return {results: []};
- }
- }
- };
-
- return ajaxOpts;
- };
- /*
- * Used to set the value of the HTMLInputElement
- * when there is a change in the select2 value
- *
- */
- combobox_proto.onChange = function() {
- var self = this;
- var data = $(this).select2( "data" );
- if (data !== null) {
- $(this).val( data.text );
- } else {
- $(this).val( '' );
- }
-
- // Set the corresponding values for any other field
- // in the form which is dependent on this element
- var cmbox = new sf.select2.combobox();
- var dep_on_me = $.unique(cmbox.dependentOnMe( $(this) ));
- dep_on_me.forEach( function( dependent_field_name ) {
- var dependent_field;
- if ( cmbox.partOfMultiple( $(self) ) ) {
- dependent_field = $(self).closest( ".multipleTemplateInstance" )
- .find( '[origname ="' + dependent_field_name + '" ]' );
- } else {
- dependent_field = $('[name ="' + dependent_field_name + '" ]');
- }
- cmbox.dependentFieldAutocompleteHandler( dependent_field, self );
- });
- };
- /*
- * Handles dependent field autocompletion
- *
- * @param {HTMLElement} dependent_field
- * @param {HTMLElement} dependent_on
- *
- */
- combobox_proto.dependentFieldAutocompleteHandler = function( dependent_field, dependent_on ) {
- var class_name = $(dependent_field).attr( 'class' );
- var cmbox = new sf.select2.combobox();
- var tokens = new sf.select2.tokens();
-
- if ( class_name.indexOf( 'sfComboBox' ) != -1 ) {
- cmbox.refresh(dependent_field);
- } else if ( class_name.indexOf( 'sfTokens' ) != -1 ) {
- tokens.refresh(dependent_field);
- } else if ( class_name.indexOf( 'createboxInput' ) != -1 ) {
- var name_attr = cmbox.nameAttr($(dependent_on));
- var field_name = $(dependent_field).attr(name_attr),
- base_field_name = $(dependent_on).attr(name_attr),
- base_value = $(dependent_on).val();
- $(dependent_field).setDependentAutocompletion(field_name, base_field_name, base_value);
- }
-
- };
-
- sf.select2.combobox.prototype = combobox_proto;
-
-} )( jQuery, mediaWiki, semanticforms ); \ No newline at end of file
diff --git a/SemanticForms/libs/ext.sf.select2.tokens.js b/SemanticForms/libs/ext.sf.select2.tokens.js
deleted file mode 100644
index 3be02233..00000000
--- a/SemanticForms/libs/ext.sf.select2.tokens.js
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * ext.sf.select2.tokens.js
- *
- * Javascript utility class to handle autocomplete
- * for tokens input type using Select2 JS library
- *
- * @file
- *
- * @licence GNU GPL v2+
- * @author Jatin Mehta
- */
-
-( function( $, mw, sf ) {
- 'use strict';
-
- /**
- * Inheritance class for the sf.select2 constructor
- *
- *
- * @class
- */
- sf.select2 = sf.select2 || {};
-
- /**
- * Class constructor
- *
- *
- * @class
- * @constructor
- */
- sf.select2.tokens = function() {
-
- };
-
- var tokens_proto = new sf.select2.base();
- /*
- * Applies select2 to the HTML element
- *
- * @param {HTMLElement} element
- *
- */
- tokens_proto.apply = function( element ) {
- this.id = element.attr( "id" );
- var opts = this.setOptions();
- var cur_val = element.val();
-
- element.select2(opts);
- this.sortable(element);
- element.on( "change", this.onChange );
- element.val(cur_val);
- };
- /*
- * Returns options to be set by select2
- *
- * @return {object} opts
- *
- */
- tokens_proto.setOptions = function() {
- var self = this;
- var input_id = this.id;
- var opts = {};
- input_id = "#" + input_id;
- var input_tagname = $(input_id).prop( "tagName" );
- var autocomplete_opts = this.getAutocompleteOpts();
-
- if ( autocomplete_opts.autocompletedatatype !== undefined ) {
- opts.ajax = this.getAjaxOpts();
- opts.minimumInputLength = 1;
- opts.formatInputTooShort = "";
- opts.formatSelection = this.formatSelection;
- opts.escapeMarkup = function (m) { return m; };
- } else if ( input_tagname == "INPUT" ) {
- opts.data = this.getData( autocomplete_opts.autocompletesettings );
- }
- var sfgAutocompleteOnAllChars = mw.config.get( 'sfgAutocompleteOnAllChars' );
- if ( !sfgAutocompleteOnAllChars ) {
- opts.matcher = function( term, text ) {
- var no_diac_text = sf.select2.base.prototype.removeDiacritics( text );
- var position = no_diac_text.toUpperCase().indexOf(term.toUpperCase());
- var position_with_space = no_diac_text.toUpperCase().indexOf(" " + term.toUpperCase());
- if ( (position != -1 && position === 0 ) || position_with_space != -1 ) {
- return true;
- } else {
- return false;
- }
- };
- }
- opts.formatResult = this.formatResult;
- opts.formatSearching = mw.msg( "sf-select2-searching" );
- opts.formatNoMatches = "";
- opts.placeholder = $(input_id).attr( "placeholder" );
- if ( $(input_id).attr( "existingvaluesonly" ) !== "true" && input_tagname == "INPUT" ) {
- opts.createSearchChoice = function( term, data ) { if ( $(data).filter(function() { return this.text.localeCompare( term )===0; }).length===0 ) {return { id:term, text:term };} };
- }
- if ( $(input_id).val() !== "" && input_tagname == "INPUT" ) {
- opts.initSelection = function ( element, callback ) {
- var data = [];
- var delim = self.getDelimiter($(input_id));
- var i = 0;
- $(element.val().trim().split(delim)).each(function () {
- if ( this !== "" ) {
- data.push({id: i, text: this});
- i += 1;
- }
- });
- element.val( "" );
- callback(data);
- };
- }
- var size = $(input_id).attr("size");
- if ( size === undefined ) {
- size = 100; //default value
- }
- opts.containerCss = { 'min-width': size * 6 };
- opts.containerCssClass = 'sf-select2-container';
- opts.dropdownCssClass = 'sf-select2-dropdown';
-
- opts.multiple = true;
- opts.tokenSeparators = this.getDelimiter($(input_id));
- opts.openOnEnter = true;
- var maxvalues = $(input_id).attr( "maxvalues" );
- if ( maxvalues !== undefined ) {
- opts.maximumSelectionSize = maxvalues;
- opts.formatSelectionTooBig = mw.msg( "sf-select2-selection-too-big", maxvalues );
- }
- opts.adaptContainerCssClass = function( clazz ) {
- if (clazz == "mandatoryField") {
- return "";
- } else {
- return clazz;
- }
- };
-
- return opts;
- };
- /*
- * Returns data to be used by select2 for tokens autocompletion
- *
- * @param {string} autocompletesettings
- * @return {associative array} values
- *
- */
- tokens_proto.getData = function( autocompletesettings ) {
- var input_id = "#" + this.id;
- var values = [];
- var data;
- var dep_on = this.dependentOn();
- if ( dep_on === null ) {
- if ( autocompletesettings == 'external data' ) {
- var name = $(input_id).attr(this.nameAttr($(input_id)));
- var sfgEDSettings = mw.config.get( 'sfgEDSettings' );
- var edgValues = mw.config.get( 'edgValues' );
- data = {};
- if ( sfgEDSettings[name].title !== undefined && sfgEDSettings[name].title !== "" ) {
- data.title = edgValues[sfgEDSettings[name].title];
- i = 0;
- if ( data.title !== undefined && data.title !== null ) {
- data.title.forEach(function() {
- values.push({
- id: i + 1, text: data.title[i]
- });
- i++;
- });
- }
- if ( sfgEDSettings[name].image !== undefined && sfgEDSettings[name].image !== "" ) {
- data.image = edgValues[sfgEDSettings[name].image];
- i = 0;
- if ( data.image !== undefined && data.image !== null ) {
- data.image.forEach(function() {
- values[i].image = data.image[i];
- i++;
- });
- }
- }
- if ( sfgEDSettings[name].description !== undefined && sfgEDSettings[name].description !== "" ) {
- data.description = edgValues[sfgEDSettings[name].description];
- i = 0;
- if ( data.description !== undefined && data.description !== null ) {
- data.description.forEach(function() {
- values[i].description = data.description[i];
- i++;
- });
- }
- }
- }
-
- } else {
- var sfgAutocompleteValues = mw.config.get( 'sfgAutocompleteValues' );
- data = sfgAutocompleteValues[autocompletesettings];
- var i = 0;
- //Convert data into the format accepted by Select2
- if ( data !== undefined && data !== null ) {
- data.forEach(function()
- {
- values.push({
- id: i, text: data[i]
- });
- i++;
- });
- }
- }
- } else { //Dependent field autocompletion
- var dep_field_opts = this.getDependentFieldOpts( dep_on );
- var my_server = mw.config.get( 'wgScriptPath' ) + "/api.php";
- my_server += "?action=sfautocomplete&format=json&property=" + dep_field_opts.prop + "&baseprop=" + dep_field_opts.base_prop + "&basevalue=" + dep_field_opts.base_value;
- $.ajax({
- url: my_server,
- dataType: 'json',
- async: false,
- success: function(data) {
- var id = 0;
- //Convert data into the format accepted by Select2
- data.sfautocomplete.forEach( function(item) {
- values.push({
- id: id++, text: item.title
- });
- });
- return values;
- }
- });
- }
-
- return values;
- };
- /*
- * Returns ajax options to be used by select2 for
- * remote autocompletion of tokens
- *
- * @return {object} ajaxOpts
- *
- */
- tokens_proto.getAjaxOpts = function() {
- var autocomplete_opts = this.getAutocompleteOpts();
- var data_source = autocomplete_opts.autocompletesettings.split(',')[0];
- var my_server = mw.util.wikiScript( 'api' );
- my_server += "?action=sfautocomplete&format=json&" + autocomplete_opts.autocompletedatatype + "=" + data_source;
-
- var ajaxOpts = {
- url: my_server,
- dataType: 'json',
- data: function (term) {
- return {
- substr: term, // search term
- };
- },
- results: function (data, page, query) { // parse the results into the format expected by Select2.
- var id = 0;
- if (data.sfautocomplete !== undefined) {
- data.sfautocomplete.forEach( function(item) {
- item.id = id++;
- item.text = item.title;
- });
- return {results: data.sfautocomplete};
- } else {
- return {results: []};
- }
- }
- };
-
- return ajaxOpts;
- };
- /*
- * Used to set the value of the HTMLInputElement
- * when there is a change in the select2 value
- *
- */
- tokens_proto.onChange = function() {
- var self = this;
- var data = $(this).select2( "data" );
- var tokens = new sf.select2.tokens();
- var delim = tokens.getDelimiter( $(this) );
-
- if (data !== null) {
- var tokens_value = "";
- data.forEach( function( token ) {
- tokens_value += token.text.trim() + delim + " ";
- });
- $(this).val( tokens_value );
- } else {
- $(this).val( '' );
- }
- };
- /*
- * Returns delimiter for the token field
- *
- * @return {string} delimiter
- *
- */
- tokens_proto.getDelimiter = function ( element ) {
- var field_values = element.attr('autocompletesettings').split( ',' );
- var delimiter = ",";
- if (field_values[1] == 'list' && field_values[2] !== undefined ) {
- delimiter = field_values[2];
- }
-
- return delimiter;
- };
- /*
- * Makes the choices rearrangable in tokens
- *
- * @param {HTMLElement} element
- *
- */
- tokens_proto.sortable = function( element ) {
- element.select2("container").find("ul.select2-choices").sortable({
- containment: 'parent',
- start: function() { $(".sfTokens").select2("onSortStart"); },
- update: function() { $(".sfTokens").select2("onSortEnd"); }
- });
- };
-
- sf.select2.tokens.prototype = tokens_proto;
-
-} )( jQuery, mediaWiki, semanticforms ); \ No newline at end of file
diff --git a/SemanticForms/libs/jquery.browser.js b/SemanticForms/libs/jquery.browser.js
deleted file mode 100644
index 53df7491..00000000
--- a/SemanticForms/libs/jquery.browser.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Copy of some code from jquery.migrate.js to provide the jquery.browser functionality
- * which was removed from recent jQuery versions
- *
- * TODO: Actually remove usage of jquery.browser from SF
- *
- * @author Stephan Gambke
- */
-
-; (function (jQuery) {
- var uaMatch = function (ua) {
- ua = ua.toLowerCase();
-
- var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
- /(webkit)[ \/]([\w.]+)/.exec(ua) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
- /(msie) ([\w.]+)/.exec(ua) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
- [];
-
- return {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
- };
-
-// Don't clobber any existing jQuery.browser in case it's different
- if (!jQuery.browser) {
- var matched = uaMatch(navigator.userAgent);
- var browser = {};
-
- if (matched.browser) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- }
-
- // Chrome is Webkit, but Webkit is also Safari.
- if (browser.chrome) {
- browser.webkit = true;
- } else if (browser.webkit) {
- browser.safari = true;
- }
-
- jQuery.browser = browser;
- }
-})( jQuery );
diff --git a/SemanticForms/libs/jquery.dynatree.js b/SemanticForms/libs/jquery.dynatree.js
deleted file mode 100644
index 308ad009..00000000
--- a/SemanticForms/libs/jquery.dynatree.js
+++ /dev/null
@@ -1,3420 +0,0 @@
-/*************************************************************************
- jquery.dynatree.js
- Dynamic tree view control, with support for lazy loading of branches.
-
- Copyright (c) 2006-2013, Martin Wendt (http://wwWendt.de)
- Dual licensed under the MIT or GPL Version 2 licenses.
- http://code.google.com/p/dynatree/wiki/LicenseInfo
-
- A current version and some documentation is available at
- http://dynatree.googlecode.com/
-
- $Version: 1.2.4$
- $Revision: 644, 2013-02-12 21:39:36$
-
- @depends: jquery.js
- @depends: jquery.ui.core.js
- @depends: jquery.cookie.js
-*************************************************************************/
-
-/* jsHint options*/
-// Note: We currently allow eval() to parse the 'data' attribtes, when initializing from HTML.
-// TODO: pass jsHint with the options given in grunt.js only.
-// The following should not be required:
-/*global alert */
-/*jshint nomen:false, smarttabs:true, eqeqeq:false, evil:true, regexp:false */
-
-/*************************************************************************
- * Debug functions
- */
-
-var _canLog = true;
-
-function _log(mode, msg) {
- /**
- * Usage: logMsg("%o was toggled", this);
- */
- if( !_canLog ){
- return;
- }
- // Remove first argument
- var args = Array.prototype.slice.apply(arguments, [1]);
- // Prepend timestamp
- var dt = new Date();
- var tag = dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds()+"."+dt.getMilliseconds();
- args[0] = tag + " - " + args[0];
-
- try {
- switch( mode ) {
- case "info":
- window.console.info.apply(window.console, args);
- break;
- case "warn":
- window.console.warn.apply(window.console, args);
- break;
- default:
- window.console.log.apply(window.console, args);
- break;
- }
- } catch(e) {
- if( !window.console ){
- _canLog = false; // Permanently disable, when logging is not supported by the browser
- }else if(e.number === -2146827850){
- // fix for IE8, where window.console.log() exists, but does not support .apply()
- window.console.log(args.join(", "));
- }
- }
-}
-
-/* Check browser version, since $.browser was removed in jQuery 1.9 */
-function _checkBrowser(){
- var matched, browser;
- function uaMatch( ua ) {
- ua = ua.toLowerCase();
- var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
- return {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
- }
- matched = uaMatch( navigator.userAgent );
- browser = {};
- if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- }
- if ( browser.chrome ) {
- browser.webkit = true;
- } else if ( browser.webkit ) {
- browser.safari = true;
- }
- return browser;
-}
-var BROWSER = jQuery.browser || _checkBrowser();
-
-function logMsg(msg) {
- Array.prototype.unshift.apply(arguments, ["debug"]);
- _log.apply(this, arguments);
-}
-
-
-// Forward declaration
-var getDynaTreePersistData = null;
-
-
-
-/*************************************************************************
- * Constants
- */
-var DTNodeStatus_Error = -1;
-var DTNodeStatus_Loading = 1;
-var DTNodeStatus_Ok = 0;
-
-
-// Start of local namespace
-(function($) {
-
-/*************************************************************************
- * Common tool functions.
- */
-
-var Class = {
- create: function() {
- return function() {
- this.initialize.apply(this, arguments);
- };
- }
-};
-
-// Tool function to get dtnode from the event target:
-function getDtNodeFromElement(el) {
- alert("getDtNodeFromElement is deprecated");
- return $.ui.dynatree.getNode(el);
-/*
- var iMax = 5;
- while( el && iMax-- ) {
- if(el.dtnode) { return el.dtnode; }
- el = el.parentNode;
- }
- return null;
-*/
-}
-
-function noop() {
-}
-
-/** Compare two dotted version strings (like '10.2.3').
- * @returns {Integer} 0: v1 == v2, -1: v1 < v2, 1: v1 > v2
- */
-function versionCompare(v1, v2) {
- var v1parts = ("" + v1).split("."),
- v2parts = ("" + v2).split("."),
- minLength = Math.min(v1parts.length, v2parts.length),
- p1, p2, i;
- // Compare tuple pair-by-pair.
- for(i = 0; i < minLength; i++) {
- // Convert to integer if possible, because "8" > "10".
- p1 = parseInt(v1parts[i], 10);
- p2 = parseInt(v2parts[i], 10);
- if (isNaN(p1)){ p1 = v1parts[i]; }
- if (isNaN(p2)){ p2 = v2parts[i]; }
- if (p1 == p2) {
- continue;
- }else if (p1 > p2) {
- return 1;
- }else if (p1 < p2) {
- return -1;
- }
- // one operand is NaN
- return NaN;
- }
- // The longer tuple is always considered 'greater'
- if (v1parts.length === v2parts.length) {
- return 0;
- }
- return (v1parts.length < v2parts.length) ? -1 : 1;
-}
-
-
-/*************************************************************************
- * Class DynaTreeNode
- */
-var DynaTreeNode = Class.create();
-
-DynaTreeNode.prototype = {
- initialize: function(parent, tree, data) {
- /**
- * @constructor
- */
- this.parent = parent;
- this.tree = tree;
- if ( typeof data === "string" ){
- data = { title: data };
- }
- if( !data.key ){
- data.key = "_" + tree._nodeCount++;
- }else{
- data.key = "" + data.key; // issue 371
- }
- this.data = $.extend({}, $.ui.dynatree.nodedatadefaults, data);
- this.li = null; // not yet created
- this.span = null; // not yet created
- this.ul = null; // not yet created
- this.childList = null; // no subnodes yet
- this._isLoading = false; // Lazy content is being loaded
- this.hasSubSel = false;
- this.bExpanded = false;
- this.bSelected = false;
-
- },
-
- toString: function() {
- return "DynaTreeNode<" + this.data.key + ">: '" + this.data.title + "'";
- },
-
- toDict: function(recursive, callback) {
- var dict = $.extend({}, this.data);
- dict.activate = ( this.tree.activeNode === this );
- dict.focus = ( this.tree.focusNode === this );
- dict.expand = this.bExpanded;
- dict.select = this.bSelected;
- if( callback ){
- callback(dict);
- }
- if( recursive && this.childList ) {
- dict.children = [];
- for(var i=0, l=this.childList.length; i<l; i++ ){
- dict.children.push(this.childList[i].toDict(true, callback));
- }
- } else {
- delete dict.children;
- }
- return dict;
- },
-
- fromDict: function(dict) {
- /**
- * Update node data. If dict contains 'children', then also replace
- * the hole sub tree.
- */
- var children = dict.children;
- if(children === undefined){
- this.data = $.extend(this.data, dict);
- this.render();
- return;
- }
- dict = $.extend({}, dict);
- dict.children = undefined;
- this.data = $.extend(this.data, dict);
- this.removeChildren();
- this.addChild(children);
- },
-
- _getInnerHtml: function() {
- var tree = this.tree,
- opts = tree.options,
- cache = tree.cache,
- level = this.getLevel(),
- data = this.data,
- res = "",
- imageSrc;
- // connector (expanded, expandable or simple)
- if( level < opts.minExpandLevel ) {
- if(level > 1){
- res += cache.tagConnector;
- }
- // .. else (i.e. for root level) skip expander/connector altogether
- } else if( this.hasChildren() !== false ) {
- res += cache.tagExpander;
- } else {
- res += cache.tagConnector;
- }
- // Checkbox mode
- if( opts.checkbox && data.hideCheckbox !== true && !data.isStatusNode ) {
- res += cache.tagCheckbox;
- }
- // folder or doctype icon
- if ( data.icon ) {
- if (data.icon.charAt(0) === "/"){
- imageSrc = data.icon;
- }else{
- imageSrc = opts.imagePath + data.icon;
- }
- res += "<img src='" + imageSrc + "' alt='' />";
- } else if ( data.icon === false ) {
- // icon == false means 'no icon'
-// noop(); // keep JSLint happy
- } else if ( data.iconClass ) {
- res += "<span class='" + " " + data.iconClass + "'></span>";
- } else {
- // icon == null means 'default icon'
- res += cache.tagNodeIcon;
- }
- // node title
- var nodeTitle = "";
- if ( opts.onCustomRender ){
- nodeTitle = opts.onCustomRender.call(tree, this) || "";
- }
- if(!nodeTitle){
- var tooltip = data.tooltip ? ' title="' + data.tooltip.replace(/\"/g, '&quot;') + '"' : '',
- href = data.href || "#";
- if( opts.noLink || data.noLink ) {
- nodeTitle = '<span style="display:inline-block;" class="' + opts.classNames.title + '"' + tooltip + '>' + data.title + '</span>';
-// this.tree.logDebug("nodeTitle: " + nodeTitle);
- } else {
- nodeTitle = '<a href="' + href + '" class="' + opts.classNames.title + '"' + tooltip + '>' + data.title + '</a>';
- }
- }
- res += nodeTitle;
- return res;
- },
-
-
- _fixOrder: function() {
- /**
- * Make sure, that <li> order matches childList order.
- */
- var cl = this.childList;
- if( !cl || !this.ul ){
- return;
- }
- var childLI = this.ul.firstChild;
- for(var i=0, l=cl.length-1; i<l; i++) {
- var childNode1 = cl[i];
- var childNode2 = childLI.dtnode;
- if( childNode1 !== childNode2 ) {
- this.tree.logDebug("_fixOrder: mismatch at index " + i + ": " + childNode1 + " != " + childNode2);
- this.ul.insertBefore(childNode1.li, childNode2.li);
- } else {
- childLI = childLI.nextSibling;
- }
- }
- },
-
-
- render: function(useEffects, includeInvisible) {
- /**
- * Create <li><span>..</span> .. </li> tags for this node.
- *
- * <li id='KEY' dtnode=NODE> // This div contains the node's span and list of child div's.
- * <span class='title'>S S S A</span> // Span contains graphic spans and title <a> tag
- * <ul> // only present, when node has children
- * <li id='KEY' dtnode=NODE>child1</li>
- * <li id='KEY' dtnode=NODE>child2</li>
- * </ul>
- * </li>
- */
-// this.tree.logDebug("%s.render(%s)", this, useEffects);
- // ---
- var tree = this.tree,
- parent = this.parent,
- data = this.data,
- opts = tree.options,
- cn = opts.classNames,
- isLastSib = this.isLastSibling(),
- firstTime = false;
-
- if( !parent && !this.ul ) {
- // Root node has only a <ul>
- this.li = this.span = null;
- this.ul = document.createElement("ul");
- if( opts.minExpandLevel > 1 ){
- this.ul.className = cn.container + " " + cn.noConnector;
- }else{
- this.ul.className = cn.container;
- }
- } else if( parent ) {
- // Create <li><span /> </li>
- if( ! this.li ) {
- firstTime = true;
- this.li = document.createElement("li");
- this.li.dtnode = this;
- if( data.key && opts.generateIds ){
- this.li.id = opts.idPrefix + data.key;
- }
- this.span = document.createElement("span");
- this.span.className = cn.title;
- this.li.appendChild(this.span);
-
- if( !parent.ul ) {
- // This is the parent's first child: create UL tag
- // (Hidden, because it will be
- parent.ul = document.createElement("ul");
- parent.ul.style.display = "none";
- parent.li.appendChild(parent.ul);
-// if( opts.minExpandLevel > this.getLevel() ){
-// parent.ul.className = cn.noConnector;
-// }
- }
- // set node connector images, links and text
-// this.span.innerHTML = this._getInnerHtml();
-
- parent.ul.appendChild(this.li);
- }
- // set node connector images, links and text
- this.span.innerHTML = this._getInnerHtml();
- // Set classes for current status
- var cnList = [];
- cnList.push(cn.node);
- if( data.isFolder ){
- cnList.push(cn.folder);
- }
- if( this.bExpanded ){
- cnList.push(cn.expanded);
- }
- if( this.hasChildren() !== false ){
- cnList.push(cn.hasChildren);
- }
- if( data.isLazy && this.childList === null ){
- cnList.push(cn.lazy);
- }
- if( isLastSib ){
- cnList.push(cn.lastsib);
- }
- if( this.bSelected ){
- cnList.push(cn.selected);
- }
- if( this.hasSubSel ){
- cnList.push(cn.partsel);
- }
- if( tree.activeNode === this ){
- cnList.push(cn.active);
- }
- if( data.addClass ){
- cnList.push(data.addClass);
- }
- // IE6 doesn't correctly evaluate multiple class names,
- // so we create combined class names that can be used in the CSS
- cnList.push(cn.combinedExpanderPrefix + (this.bExpanded ? "e" : "c") + (data.isLazy && this.childList === null ? "d" : "") + (isLastSib ? "l" : ""));
- cnList.push(cn.combinedIconPrefix + (this.bExpanded ? "e" : "c") + (data.isFolder ? "f" : ""));
- this.span.className = cnList.join(" ");
-
- // TODO: we should not set this in the <span> tag also, if we set it here:
- this.li.className = isLastSib ? cn.lastsib : "";
-
- // Allow tweaking, binding, after node was created for the first time
- if(firstTime && opts.onCreate){
- opts.onCreate.call(tree, this, this.span);
- }
- // Hide children, if node is collapsed
-// this.ul.style.display = ( this.bExpanded || !parent ) ? "" : "none";
- // Allow tweaking after node state was rendered
- if(opts.onRender){
- opts.onRender.call(tree, this, this.span);
- }
- }
- // Visit child nodes
- if( (this.bExpanded || includeInvisible === true) && this.childList ) {
- for(var i=0, l=this.childList.length; i<l; i++) {
- this.childList[i].render(false, includeInvisible);
- }
- // Make sure the tag order matches the child array
- this._fixOrder();
- }
- // Hide children, if node is collapsed
- if( this.ul ) {
- var isHidden = (this.ul.style.display === "none");
- var isExpanded = !!this.bExpanded;
-// logMsg("isHidden:%s", isHidden);
- if( useEffects && opts.fx && (isHidden === isExpanded) ) {
- var duration = opts.fx.duration || 200;
- $(this.ul).animate(opts.fx, duration);
- } else {
- this.ul.style.display = ( this.bExpanded || !parent ) ? "" : "none";
- }
- }
- },
- /** Return '/id1/id2/id3'. */
- getKeyPath: function(excludeSelf) {
- var path = [];
- this.visitParents(function(node){
- if(node.parent){
- path.unshift(node.data.key);
- }
- }, !excludeSelf);
- return "/" + path.join(this.tree.options.keyPathSeparator);
- },
-
- getParent: function() {
- return this.parent;
- },
-
- getChildren: function() {
- if(this.hasChildren() === undefined){
- return undefined; // Lazy node: unloaded, currently loading, or load error
- }
- return this.childList;
- },
-
- /** Check if node has children (returns undefined, if not sure). */
- hasChildren: function() {
- if(this.data.isLazy){
- if(this.childList === null || this.childList === undefined){
- // Not yet loaded
- return undefined;
- }else if(this.childList.length === 0){
- // Loaded, but response was empty
- return false;
- }else if(this.childList.length === 1 && this.childList[0].isStatusNode()){
- // Currently loading or load error
- return undefined;
- }
- return true;
- }
- return !!this.childList;
- },
-
- isFirstSibling: function() {
- var p = this.parent;
- return !p || p.childList[0] === this;
- },
-
- isLastSibling: function() {
- var p = this.parent;
- return !p || p.childList[p.childList.length-1] === this;
- },
-
- isLoading: function() {
- return !!this._isLoading;
- },
-
- getPrevSibling: function() {
- if( !this.parent ){
- return null;
- }
- var ac = this.parent.childList;
- for(var i=1, l=ac.length; i<l; i++){ // start with 1, so prev(first) = null
- if( ac[i] === this ){
- return ac[i-1];
- }
- }
- return null;
- },
-
- getNextSibling: function() {
- if( !this.parent ){
- return null;
- }
- var ac = this.parent.childList;
- for(var i=0, l=ac.length-1; i<l; i++){ // up to length-2, so next(last) = null
- if( ac[i] === this ){
- return ac[i+1];
- }
- }
- return null;
- },
-
- isStatusNode: function() {
- return (this.data.isStatusNode === true);
- },
-
- isChildOf: function(otherNode) {
- return (this.parent && this.parent === otherNode);
- },
-
- isDescendantOf: function(otherNode) {
- if(!otherNode){
- return false;
- }
- var p = this.parent;
- while( p ) {
- if( p === otherNode ){
- return true;
- }
- p = p.parent;
- }
- return false;
- },
-
- countChildren: function() {
- var cl = this.childList;
- if( !cl ){
- return 0;
- }
- var n = cl.length;
- for(var i=0, l=n; i<l; i++){
- var child = cl[i];
- n += child.countChildren();
- }
- return n;
- },
-
- /**Sort child list by title.
- * cmd: optional compare function.
- * deep: optional: pass true to sort all descendant nodes.
- */
- sortChildren: function(cmp, deep) {
- var cl = this.childList;
- if( !cl ){
- return;
- }
- cmp = cmp || function(a, b) {
-// return a.data.title === b.data.title ? 0 : a.data.title > b.data.title ? 1 : -1;
- var x = a.data.title.toLowerCase(),
- y = b.data.title.toLowerCase();
- return x === y ? 0 : x > y ? 1 : -1;
- };
- cl.sort(cmp);
- if( deep ){
- for(var i=0, l=cl.length; i<l; i++){
- if( cl[i].childList ){
- cl[i].sortChildren(cmp, "$norender$");
- }
- }
- }
- if( deep !== "$norender$" ){
- this.render();
- }
- },
-
- _setStatusNode: function(data) {
- // Create, modify or remove the status child node (pass 'null', to remove it).
- var firstChild = ( this.childList ? this.childList[0] : null );
- if( !data ) {
- if ( firstChild && firstChild.isStatusNode()) {
- try{
- // I've seen exceptions here with loadKeyPath...
- if(this.ul){
- this.ul.removeChild(firstChild.li);
- firstChild.li = null; // avoid leaks (issue 215)
- }
- }catch(e){}
- if( this.childList.length === 1 ){
- this.childList = [];
- }else{
- this.childList.shift();
- }
- }
- } else if ( firstChild ) {
- data.isStatusNode = true;
- data.key = "_statusNode";
- firstChild.data = data;
- firstChild.render();
- } else {
- data.isStatusNode = true;
- data.key = "_statusNode";
- firstChild = this.addChild(data);
- }
- },
-
- setLazyNodeStatus: function(lts, opts) {
- var tooltip = (opts && opts.tooltip) ? opts.tooltip : null,
- info = (opts && opts.info) ? " (" + opts.info + ")" : "";
- switch( lts ) {
- case DTNodeStatus_Ok:
- this._setStatusNode(null);
- $(this.span).removeClass(this.tree.options.classNames.nodeLoading);
- this._isLoading = false;
-// this.render();
- if( this.tree.options.autoFocus ) {
- if( this === this.tree.tnRoot && this.childList && this.childList.length > 0) {
- // special case: using ajaxInit
- this.childList[0].focus();
- } else {
- this.focus();
- }
- }
- break;
- case DTNodeStatus_Loading:
- this._isLoading = true;
- $(this.span).addClass(this.tree.options.classNames.nodeLoading);
- // The root is hidden, so we set a temporary status child
- if(!this.parent){
- this._setStatusNode({
- title: this.tree.options.strings.loading + info,
- tooltip: tooltip,
- addClass: this.tree.options.classNames.nodeWait
- });
- }
- break;
- case DTNodeStatus_Error:
- this._isLoading = false;
-// $(this.span).addClass(this.tree.options.classNames.nodeError);
- this._setStatusNode({
- title: this.tree.options.strings.loadError + info,
- tooltip: tooltip,
- addClass: this.tree.options.classNames.nodeError
- });
- break;
- default:
- throw "Bad LazyNodeStatus: '" + lts + "'.";
- }
- },
-
- _parentList: function(includeRoot, includeSelf) {
- var l = [];
- var dtn = includeSelf ? this : this.parent;
- while( dtn ) {
- if( includeRoot || dtn.parent ){
- l.unshift(dtn);
- }
- dtn = dtn.parent;
- }
- return l;
- },
- getLevel: function() {
- /**
- * Return node depth. 0: System root node, 1: visible top-level node.
- */
- var level = 0;
- var dtn = this.parent;
- while( dtn ) {
- level++;
- dtn = dtn.parent;
- }
- return level;
- },
-
- _getTypeForOuterNodeEvent: function(event) {
- /** Return the inner node span (title, checkbox or expander) if
- * event.target points to the outer span.
- * This function should fix issue #93:
- * FF2 ignores empty spans, when generating events (returning the parent instead).
- */
- var cns = this.tree.options.classNames;
- var target = event.target;
- // Only process clicks on an outer node span (probably due to a FF2 event handling bug)
- if( target.className.indexOf(cns.node) < 0 ) {
- return null;
- }
- // Event coordinates, relative to outer node span:
- var eventX = event.pageX - target.offsetLeft;
- var eventY = event.pageY - target.offsetTop;
-
- for(var i=0, l=target.childNodes.length; i<l; i++) {
- var cn = target.childNodes[i];
- var x = cn.offsetLeft - target.offsetLeft;
- var y = cn.offsetTop - target.offsetTop;
- var nx = cn.clientWidth, ny = cn.clientHeight;
-// alert (cn.className + ": " + x + ", " + y + ", s:" + nx + ", " + ny);
- if( eventX >= x && eventX <= (x+nx) && eventY >= y && eventY <= (y+ny) ) {
-// alert("HIT "+ cn.className);
- if( cn.className==cns.title ){
- return "title";
- }else if( cn.className==cns.expander ){
- return "expander";
- }else if( cn.className==cns.checkbox ){
- return "checkbox";
- }else if( cn.className==cns.nodeIcon ){
- return "icon";
- }
- }
- }
- return "prefix";
- },
-
- getEventTargetType: function(event) {
- // Return the part of a node, that a click event occured on.
- // Note: there is no check, if the event was fired on THIS node.
- var tcn = event && event.target ? event.target.className : "",
- cns = this.tree.options.classNames;
-
- if( tcn === cns.title ){
- return "title";
- }else if( tcn === cns.expander ){
- return "expander";
- }else if( tcn === cns.checkbox ){
- return "checkbox";
- }else if( tcn === cns.nodeIcon ){
- return "icon";
- }else if( tcn === cns.empty || tcn === cns.vline || tcn === cns.connector ){
- return "prefix";
- }else if( tcn.indexOf(cns.node) >= 0 ){
- // FIX issue #93
- return this._getTypeForOuterNodeEvent(event);
- }
- return null;
- },
-
- isVisible: function() {
- // Return true, if all parents are expanded.
- var parents = this._parentList(true, false);
- for(var i=0, l=parents.length; i<l; i++){
- if( ! parents[i].bExpanded ){ return false; }
- }
- return true;
- },
-
- makeVisible: function() {
- // Make sure, all parents are expanded
- var parents = this._parentList(true, false);
- for(var i=0, l=parents.length; i<l; i++){
- parents[i]._expand(true);
- }
- },
-
- focus: function() {
- // TODO: check, if we already have focus
-// this.tree.logDebug("dtnode.focus(): %o", this);
- this.makeVisible();
- try {
- $(this.span).find(">a").focus();
- } catch(e) { }
- },
-
- isFocused: function() {
- return (this.tree.tnFocused === this);
- },
-
- _activate: function(flag, fireEvents) {
- // (De)Activate - but not focus - this node.
- this.tree.logDebug("dtnode._activate(%o, fireEvents=%o) - %o", flag, fireEvents, this);
- var opts = this.tree.options;
- if( this.data.isStatusNode ){
- return;
- }
- if ( fireEvents && opts.onQueryActivate && opts.onQueryActivate.call(this.tree, flag, this) === false ){
- return; // Callback returned false
- }
- if( flag ) {
- // Activate
- if( this.tree.activeNode ) {
- if( this.tree.activeNode === this ){
- return;
- }
- this.tree.activeNode.deactivate();
- }
- if( opts.activeVisible ){
- this.makeVisible();
- }
- this.tree.activeNode = this;
- if( opts.persist ){
- $.cookie(opts.cookieId+"-active", this.data.key, opts.cookie);
- }
- this.tree.persistence.activeKey = this.data.key;
- $(this.span).addClass(opts.classNames.active);
- if ( fireEvents && opts.onActivate ){
- opts.onActivate.call(this.tree, this);
- }
- } else {
- // Deactivate
- if( this.tree.activeNode === this ) {
- if ( opts.onQueryActivate && opts.onQueryActivate.call(this.tree, false, this) === false ){
- return; // Callback returned false
- }
- $(this.span).removeClass(opts.classNames.active);
- if( opts.persist ) {
- // Note: we don't pass null, but ''. So the cookie is not deleted.
- // If we pass null, we also have to pass a COPY of opts, because $cookie will override opts.expires (issue 84)
- $.cookie(opts.cookieId+"-active", "", opts.cookie);
- }
- this.tree.persistence.activeKey = null;
- this.tree.activeNode = null;
- if ( fireEvents && opts.onDeactivate ){
- opts.onDeactivate.call(this.tree, this);
- }
- }
- }
- },
-
- activate: function() {
- // Select - but not focus - this node.
-// this.tree.logDebug("dtnode.activate(): %o", this);
- this._activate(true, true);
- },
-
- activateSilently: function() {
- this._activate(true, false);
- },
-
- deactivate: function() {
-// this.tree.logDebug("dtnode.deactivate(): %o", this);
- this._activate(false, true);
- },
-
- isActive: function() {
- return (this.tree.activeNode === this);
- },
-
- _userActivate: function() {
- // Handle user click / [space] / [enter], according to clickFolderMode.
- var activate = true;
- var expand = false;
- if ( this.data.isFolder ) {
- switch( this.tree.options.clickFolderMode ) {
- case 2:
- activate = false;
- expand = true;
- break;
- case 3:
- activate = expand = true;
- break;
- }
- }
- if( this.parent === null ) {
- expand = false;
- }
- if( expand ) {
- this.toggleExpand();
- this.focus();
- }
- if( activate ) {
- this.activate();
- }
- },
-
- _setSubSel: function(hasSubSel) {
- if( hasSubSel ) {
- this.hasSubSel = true;
- $(this.span).addClass(this.tree.options.classNames.partsel);
- } else {
- this.hasSubSel = false;
- $(this.span).removeClass(this.tree.options.classNames.partsel);
- }
- },
- /**
- * Fix selection and partsel status, of parent nodes, according to current status of
- * end nodes.
- */
- _updatePartSelectionState: function() {
-// alert("_updatePartSelectionState " + this);
-// this.tree.logDebug("_updatePartSelectionState() - %o", this);
- var sel;
- // Return `true` or `false` for end nodes and remove part-sel flag
- if( ! this.hasChildren() ){
- sel = (this.bSelected && !this.data.unselectable && !this.data.isStatusNode);
- this._setSubSel(false);
- return sel;
- }
- // Return `true`, `false`, or `undefined` for parent nodes
- var i, l,
- cl = this.childList,
- allSelected = true,
- allDeselected = true;
- for(i=0, l=cl.length; i<l; i++) {
- var n = cl[i],
- s = n._updatePartSelectionState();
- if( s !== false){
- allDeselected = false;
- }
- if( s !== true){
- allSelected = false;
- }
- }
- if( allSelected ){
- sel = true;
- } else if ( allDeselected ){
- sel = false;
- } else {
- sel = undefined;
- }
- this._setSubSel(sel === undefined);
- this.bSelected = (sel === true);
- return sel;
- },
-
- /**
- * Fix selection status, after this node was (de)selected in multi-hier mode.
- * This includes (de)selecting all children.
- */
- _fixSelectionState: function() {
-// alert("_fixSelectionState " + this);
-// this.tree.logDebug("_fixSelectionState(%s) - %o", this.bSelected, this);
- var p, i, l;
- if( this.bSelected ) {
- // Select all children
- this.visit(function(node){
- node.parent._setSubSel(true);
- if(!node.data.unselectable){
- node._select(true, false, false);
- }
- });
- // Select parents, if all children are selected
- p = this.parent;
- while( p ) {
- p._setSubSel(true);
- var allChildsSelected = true;
- for(i=0, l=p.childList.length; i<l; i++) {
- var n = p.childList[i];
- if( !n.bSelected && !n.data.isStatusNode && !n.data.unselectable) {
- // issue 305 proposes this:
-// if( !n.bSelected && !n.data.isStatusNode ) {
- allChildsSelected = false;
- break;
- }
- }
- if( allChildsSelected ){
- p._select(true, false, false);
- }
- p = p.parent;
- }
- } else {
- // Deselect all children
- this._setSubSel(false);
- this.visit(function(node){
- node._setSubSel(false);
- node._select(false, false, false);
- });
- // Deselect parents, and recalc hasSubSel
- p = this.parent;
- while( p ) {
- p._select(false, false, false);
- var isPartSel = false;
- for(i=0, l=p.childList.length; i<l; i++) {
- if( p.childList[i].bSelected || p.childList[i].hasSubSel ) {
- isPartSel = true;
- break;
- }
- }
- p._setSubSel(isPartSel);
- p = p.parent;
- }
- }
- },
-
- _select: function(sel, fireEvents, deep) {
- // Select - but not focus - this node.
-// this.tree.logDebug("dtnode._select(%o) - %o", sel, this);
- var opts = this.tree.options;
- if( this.data.isStatusNode ){
- return;
- }
- //
- if( this.bSelected === sel ) {
-// this.tree.logDebug("dtnode._select(%o) IGNORED - %o", sel, this);
- return;
- }
- // Allow event listener to abort selection
- if ( fireEvents && opts.onQuerySelect && opts.onQuerySelect.call(this.tree, sel, this) === false ){
- return; // Callback returned false
- }
- // Force single-selection
- if( opts.selectMode==1 && sel ) {
- this.tree.visit(function(node){
- if( node.bSelected ) {
- // Deselect; assuming that in selectMode:1 there's max. one other selected node
- node._select(false, false, false);
- return false;
- }
- });
- }
-
- this.bSelected = sel;
-// this.tree._changeNodeList("select", this, sel);
-
- if( sel ) {
- if( opts.persist ){
- this.tree.persistence.addSelect(this.data.key);
- }
- $(this.span).addClass(opts.classNames.selected);
-
- if( deep && opts.selectMode === 3 ){
- this._fixSelectionState();
- }
- if ( fireEvents && opts.onSelect ){
- opts.onSelect.call(this.tree, true, this);
- }
- } else {
- if( opts.persist ){
- this.tree.persistence.clearSelect(this.data.key);
- }
- $(this.span).removeClass(opts.classNames.selected);
-
- if( deep && opts.selectMode === 3 ){
- this._fixSelectionState();
- }
- if ( fireEvents && opts.onSelect ){
- opts.onSelect.call(this.tree, false, this);
- }
- }
- },
-
- select: function(sel) {
- // Select - but not focus - this node.
-// this.tree.logDebug("dtnode.select(%o) - %o", sel, this);
- if( this.data.unselectable ){
- return this.bSelected;
- }
- return this._select(sel!==false, true, true);
- },
-
- toggleSelect: function() {
-// this.tree.logDebug("dtnode.toggleSelect() - %o", this);
- return this.select(!this.bSelected);
- },
-
- isSelected: function() {
- return this.bSelected;
- },
-
- isLazy: function() {
- return !!this.data.isLazy;
- },
-
- _loadContent: function() {
- try {
- var opts = this.tree.options;
- this.tree.logDebug("_loadContent: start - %o", this);
- this.setLazyNodeStatus(DTNodeStatus_Loading);
- if( true === opts.onLazyRead.call(this.tree, this) ) {
- // If function returns 'true', we assume that the loading is done:
- this.setLazyNodeStatus(DTNodeStatus_Ok);
- // Otherwise (i.e. if the loading was started as an asynchronous process)
- // the onLazyRead(dtnode) handler is expected to call dtnode.setLazyNodeStatus(DTNodeStatus_Ok/_Error) when done.
- this.tree.logDebug("_loadContent: succeeded - %o", this);
- }
- } catch(e) {
- this.tree.logWarning("_loadContent: failed - %o", e);
- this.setLazyNodeStatus(DTNodeStatus_Error, {tooltip: ""+e});
- }
- },
-
- _expand: function(bExpand, forceSync) {
- if( this.bExpanded === bExpand ) {
- this.tree.logDebug("dtnode._expand(%o) IGNORED - %o", bExpand, this);
- return;
- }
- this.tree.logDebug("dtnode._expand(%o) - %o", bExpand, this);
- var opts = this.tree.options;
- if( !bExpand && this.getLevel() < opts.minExpandLevel ) {
- this.tree.logDebug("dtnode._expand(%o) prevented collapse - %o", bExpand, this);
- return;
- }
- if ( opts.onQueryExpand && opts.onQueryExpand.call(this.tree, bExpand, this) === false ){
- return; // Callback returned false
- }
- this.bExpanded = bExpand;
-
- // Persist expand state
- if( opts.persist ) {
- if( bExpand ){
- this.tree.persistence.addExpand(this.data.key);
- }else{
- this.tree.persistence.clearExpand(this.data.key);
- }
- }
- // Do not apply animations in init phase, or before lazy-loading
- var allowEffects = !(this.data.isLazy && this.childList === null) && !this._isLoading && !forceSync;
- this.render(allowEffects);
-
- // Auto-collapse mode: collapse all siblings
- if( this.bExpanded && this.parent && opts.autoCollapse ) {
- var parents = this._parentList(false, true);
- for(var i=0, l=parents.length; i<l; i++){
- parents[i].collapseSiblings();
- }
- }
- // If the currently active node is now hidden, deactivate it
- if( opts.activeVisible && this.tree.activeNode && ! this.tree.activeNode.isVisible() ) {
- this.tree.activeNode.deactivate();
- }
- // Expanding a lazy node: set 'loading...' and call callback
- if( bExpand && this.data.isLazy && this.childList === null && !this._isLoading ) {
- this._loadContent();
- return;
- }
- if ( opts.onExpand ){
- opts.onExpand.call(this.tree, bExpand, this);
- }
- },
-
- isExpanded: function() {
- return this.bExpanded;
- },
-
- expand: function(flag) {
- flag = (flag !== false);
- if( !this.childList && !this.data.isLazy && flag ){
- return; // Prevent expanding empty nodes
- } else if( this.parent === null && !flag ){
- return; // Prevent collapsing the root
- }
- this._expand(flag);
- },
-
- scheduleAction: function(mode, ms) {
- /** Schedule activity for delayed execution (cancel any pending request).
- * scheduleAction('cancel') will cancel the request.
- */
- if( this.tree.timer ) {
- clearTimeout(this.tree.timer);
- this.tree.logDebug("clearTimeout(%o)", this.tree.timer);
- }
- var self = this; // required for closures
- switch (mode) {
- case "cancel":
- // Simply made sure that timer was cleared
- break;
- case "expand":
- this.tree.timer = setTimeout(function(){
- self.tree.logDebug("setTimeout: trigger expand");
- self.expand(true);
- }, ms);
- break;
- case "activate":
- this.tree.timer = setTimeout(function(){
- self.tree.logDebug("setTimeout: trigger activate");
- self.activate();
- }, ms);
- break;
- default:
- throw "Invalid mode " + mode;
- }
- this.tree.logDebug("setTimeout(%s, %s): %s", mode, ms, this.tree.timer);
- },
-
- toggleExpand: function() {
- this.expand(!this.bExpanded);
- },
-
- collapseSiblings: function() {
- if( this.parent === null ){
- return;
- }
- var ac = this.parent.childList;
- for (var i=0, l=ac.length; i<l; i++) {
- if ( ac[i] !== this && ac[i].bExpanded ){
- ac[i]._expand(false);
- }
- }
- },
-
- _onClick: function(event) {
-// this.tree.logDebug("dtnode.onClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
- var targetType = this.getEventTargetType(event);
- if( targetType === "expander" ) {
- // Clicking the expander icon always expands/collapses
- this.toggleExpand();
- this.focus(); // issue 95
- } else if( targetType === "checkbox" ) {
- // Clicking the checkbox always (de)selects
- this.toggleSelect();
- this.focus(); // issue 95
- } else {
- this._userActivate();
- var aTag = this.span.getElementsByTagName("a");
- if(aTag[0]){
- // issue 154, 313
-// if(!($.browser.msie && parseInt($.browser.version, 10) < 9)){
- if(!(BROWSER.msie && parseInt(BROWSER.version, 10) < 9)){
- aTag[0].focus();
- }
- }else{
- // 'noLink' option was set
- return true;
- }
- }
- // Make sure that clicks stop, otherwise <a href='#'> jumps to the top
- event.preventDefault();
- },
-
- _onDblClick: function(event) {
-// this.tree.logDebug("dtnode.onDblClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
- },
-
- _onKeydown: function(event) {
-// this.tree.logDebug("dtnode.onKeydown(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
- var handled = true,
- sib;
-// alert("keyDown" + event.which);
-
- switch( event.which ) {
- // charCodes:
-// case 43: // '+'
- case 107: // '+'
- case 187: // '+' @ Chrome, Safari
- if( !this.bExpanded ){ this.toggleExpand(); }
- break;
-// case 45: // '-'
- case 109: // '-'
- case 189: // '+' @ Chrome, Safari
- if( this.bExpanded ){ this.toggleExpand(); }
- break;
- //~ case 42: // '*'
- //~ break;
- //~ case 47: // '/'
- //~ break;
- // case 13: // <enter>
- // <enter> on a focused <a> tag seems to generate a click-event.
- // this._userActivate();
- // break;
- case 32: // <space>
- this._userActivate();
- break;
- case 8: // <backspace>
- if( this.parent ){
- this.parent.focus();
- }
- break;
- case 37: // <left>
- if( this.bExpanded ) {
- this.toggleExpand();
- this.focus();
-// } else if( this.parent && (this.tree.options.rootVisible || this.parent.parent) ) {
- } else if( this.parent && this.parent.parent ) {
- this.parent.focus();
- }
- break;
- case 39: // <right>
- if( !this.bExpanded && (this.childList || this.data.isLazy) ) {
- this.toggleExpand();
- this.focus();
- } else if( this.childList ) {
- this.childList[0].focus();
- }
- break;
- case 38: // <up>
- sib = this.getPrevSibling();
- while( sib && sib.bExpanded && sib.childList ){
- sib = sib.childList[sib.childList.length-1];
- }
-// if( !sib && this.parent && (this.tree.options.rootVisible || this.parent.parent) )
- if( !sib && this.parent && this.parent.parent ){
- sib = this.parent;
- }
- if( sib ){
- sib.focus();
- }
- break;
- case 40: // <down>
- if( this.bExpanded && this.childList ) {
- sib = this.childList[0];
- } else {
- var parents = this._parentList(false, true);
- for(var i=parents.length-1; i>=0; i--) {
- sib = parents[i].getNextSibling();
- if( sib ){ break; }
- }
- }
- if( sib ){
- sib.focus();
- }
- break;
- default:
- handled = false;
- }
- // Return false, if handled, to prevent default processing
-// return !handled;
- if(handled){
- event.preventDefault();
- }
- },
-
- _onKeypress: function(event) {
- // onKeypress is only hooked to allow user callbacks.
- // We don't process it, because IE and Safari don't fire keypress for cursor keys.
-// this.tree.logDebug("dtnode.onKeypress(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
- },
-
- _onFocus: function(event) {
- // Handles blur and focus events.
-// this.tree.logDebug("dtnode._onFocus(%o): %o", event, this);
- var opts = this.tree.options;
- if ( event.type == "blur" || event.type == "focusout" ) {
- if ( opts.onBlur ){
- opts.onBlur.call(this.tree, this);
- }
- if( this.tree.tnFocused ){
- $(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
- }
- this.tree.tnFocused = null;
- if( opts.persist ){
- $.cookie(opts.cookieId+"-focus", "", opts.cookie);
- }
- } else if ( event.type=="focus" || event.type=="focusin") {
- // Fix: sometimes the blur event is not generated
- if( this.tree.tnFocused && this.tree.tnFocused !== this ) {
- this.tree.logDebug("dtnode.onFocus: out of sync: curFocus: %o", this.tree.tnFocused);
- $(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
- }
- this.tree.tnFocused = this;
- if ( opts.onFocus ){
- opts.onFocus.call(this.tree, this);
- }
- $(this.tree.tnFocused.span).addClass(opts.classNames.focused);
- if( opts.persist ){
- $.cookie(opts.cookieId+"-focus", this.data.key, opts.cookie);
- }
- }
- // TODO: return anything?
-// return false;
- },
-
- visit: function(fn, includeSelf) {
- // Call fn(node) for all child nodes. Stop iteration, if fn() returns false.
- var res = true;
- if( includeSelf === true ) {
- res = fn(this);
- if( res === false || res == "skip" ){
- return res;
- }
- }
- if(this.childList){
- for(var i=0, l=this.childList.length; i<l; i++){
- res = this.childList[i].visit(fn, true);
- if( res === false ){
- break;
- }
- }
- }
- return res;
- },
-
- visitParents: function(fn, includeSelf) {
- // Visit parent nodes (bottom up)
- if(includeSelf && fn(this) === false){
- return false;
- }
- var p = this.parent;
- while( p ) {
- if(fn(p) === false){
- return false;
- }
- p = p.parent;
- }
- return true;
- },
-
- remove: function() {
- // Remove this node
-// this.tree.logDebug ("%s.remove()", this);
- if ( this === this.tree.root ){
- throw "Cannot remove system root";
- }
- return this.parent.removeChild(this);
- },
-
- removeChild: function(tn) {
- // Remove tn from list of direct children.
- var ac = this.childList;
- if( ac.length == 1 ) {
- if( tn !== ac[0] ){
- throw "removeChild: invalid child";
- }
- return this.removeChildren();
- }
- if( tn === this.tree.activeNode ){
- tn.deactivate();
- }
- if( this.tree.options.persist ) {
- if( tn.bSelected ){
- this.tree.persistence.clearSelect(tn.data.key);
- }
- if ( tn.bExpanded ){
- this.tree.persistence.clearExpand(tn.data.key);
- }
- }
- tn.removeChildren(true);
- if(this.ul){
-// $("li", $(this.ul)).remove(); // issue 399
- this.ul.removeChild(tn.li); // issue 402
- }
- for(var i=0, l=ac.length; i<l; i++) {
- if( ac[i] === tn ) {
- this.childList.splice(i, 1);
-// delete tn; // JSLint complained
- break;
- }
- }
- },
-
- removeChildren: function(isRecursiveCall, retainPersistence) {
- // Remove all child nodes (more efficiently than recursive remove())
- this.tree.logDebug("%s.removeChildren(%o)", this, isRecursiveCall);
- var tree = this.tree;
- var ac = this.childList;
- if( ac ) {
- for(var i=0, l=ac.length; i<l; i++) {
- var tn = ac[i];
- if ( tn === tree.activeNode && !retainPersistence ){
- tn.deactivate();
- }
- if( this.tree.options.persist && !retainPersistence ) {
- if( tn.bSelected ){
- this.tree.persistence.clearSelect(tn.data.key);
- }
- if ( tn.bExpanded ){
- this.tree.persistence.clearExpand(tn.data.key);
- }
- }
- tn.removeChildren(true, retainPersistence);
- if(this.ul){
-// this.ul.removeChild(tn.li);
- $("li", $(this.ul)).remove(); // issue 231
- }
-// delete tn; JSLint complained
- }
- // Set to 'null' which is interpreted as 'not yet loaded' for lazy
- // nodes
- this.childList = null;
- }
- if( ! isRecursiveCall ) {
-// this._expand(false);
-// this.isRead = false;
- this._isLoading = false;
- this.render();
- }
- },
-
- setTitle: function(title) {
- this.fromDict({title: title});
- },
-
- reload: function(force) {
- throw "Use reloadChildren() instead";
- },
-
- reloadChildren: function(callback) {
- // Reload lazy content (expansion state is maintained).
- if( this.parent === null ){
- throw "Use tree.reload() instead";
- }else if( ! this.data.isLazy ){
- throw "node.reloadChildren() requires lazy nodes.";
- }
- // appendAjax triggers 'nodeLoaded' event.
- // We listen to this, if a callback was passed to reloadChildren
- if(callback){
- var self = this;
- var eventType = "nodeLoaded.dynatree." + this.tree.$tree.attr("id") + "." + this.data.key;
- this.tree.$tree.bind(eventType, function(e, node, isOk){
- self.tree.$tree.unbind(eventType);
- self.tree.logDebug("loaded %o, %o, %o", e, node, isOk);
- if(node !== self){
- throw "got invalid load event";
- }
- callback.call(self.tree, node, isOk);
- });
- }
- // The expansion state is maintained
- this.removeChildren();
- this._loadContent();
-// if( this.bExpanded ) {
-// // Remove children first, to prevent effects being applied
-// this.removeChildren();
-// // then force re-expand to trigger lazy loading
-//// this.expand(false);
-//// this.expand(true);
-// this._loadContent();
-// } else {
-// this.removeChildren();
-// this._loadContent();
-// }
- },
-
- /**
- * Make sure the node with a given key path is available in the tree.
- */
- _loadKeyPath: function(keyPath, callback) {
- var tree = this.tree;
- tree.logDebug("%s._loadKeyPath(%s)", this, keyPath);
- if(keyPath === ""){
- throw "Key path must not be empty";
- }
- var segList = keyPath.split(tree.options.keyPathSeparator);
- if(segList[0] === ""){
- throw "Key path must be relative (don't start with '/')";
- }
- var seg = segList.shift();
- if(this.childList){
- for(var i=0, l=this.childList.length; i < l; i++){
- var child = this.childList[i];
- if( child.data.key === seg ){
- if(segList.length === 0) {
- // Found the end node
- callback.call(tree, child, "ok");
-
- }else if(child.data.isLazy && (child.childList === null || child.childList === undefined)){
- tree.logDebug("%s._loadKeyPath(%s) -> reloading %s...", this, keyPath, child);
- var self = this;
- // Note: this line gives a JSLint warning (Don't make functions within a loop)
- /*jshint loopfunc:true */
- child.reloadChildren(function(node, isOk){
- // After loading, look for direct child with that key
- if(isOk){
- tree.logDebug("%s._loadKeyPath(%s) -> reloaded %s.", node, keyPath, node);
- callback.call(tree, child, "loaded");
- node._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
- }else{
- tree.logWarning("%s._loadKeyPath(%s) -> reloadChildren() failed.", self, keyPath);
- callback.call(tree, child, "error");
- }
- });
- // we can ignore it, since it will only be exectuted once, the the loop is ended
- // See also http://stackoverflow.com/questions/3037598/how-to-get-around-the-jslint-error-dont-make-functions-within-a-loop
- } else {
- callback.call(tree, child, "loaded");
- // Look for direct child with that key
- child._loadKeyPath(segList.join(tree.options.keyPathSeparator), callback);
- }
- return;
- }
- }
- }
- // Could not find key
- // Callback params: child: undefined, the segment, isEndNode (segList.length === 0)
- callback.call(tree, undefined, "notfound", seg, segList.length === 0);
- tree.logWarning("Node not found: " + seg);
- return;
- },
-
- resetLazy: function() {
- // Discard lazy content.
- if( this.parent === null ){
- throw "Use tree.reload() instead";
- }else if( ! this.data.isLazy ){
- throw "node.resetLazy() requires lazy nodes.";
- }
- this.expand(false);
- this.removeChildren();
- },
-
- _addChildNode: function(dtnode, beforeNode) {
- /**
- * Internal function to add one single DynatreeNode as a child.
- *
- */
- var tree = this.tree,
- opts = tree.options,
- pers = tree.persistence;
-
-// tree.logDebug("%s._addChildNode(%o)", this, dtnode);
-
- // --- Update and fix dtnode attributes if necessary
- dtnode.parent = this;
-// if( beforeNode && (beforeNode.parent !== this || beforeNode === dtnode ) )
-// throw "<beforeNode> must be another child of <this>";
-
- // --- Add dtnode as a child
- if ( this.childList === null ) {
- this.childList = [];
- } else if( ! beforeNode ) {
- // Fix 'lastsib'
- if(this.childList.length > 0) {
- $(this.childList[this.childList.length-1].span).removeClass(opts.classNames.lastsib);
- }
- }
- if( beforeNode ) {
- var iBefore = $.inArray(beforeNode, this.childList);
- if( iBefore < 0 ){
- throw "<beforeNode> must be a child of <this>";
- }
- this.childList.splice(iBefore, 0, dtnode);
- } else {
- // Append node
- this.childList.push(dtnode);
- }
-
- // --- Handle persistence
- // Initial status is read from cookies, if persistence is active and
- // cookies are already present.
- // Otherwise the status is read from the data attributes and then persisted.
- var isInitializing = tree.isInitializing();
- if( opts.persist && pers.cookiesFound && isInitializing ) {
- // Init status from cookies
-// tree.logDebug("init from cookie, pa=%o, dk=%o", pers.activeKey, dtnode.data.key);
- if( pers.activeKey === dtnode.data.key ){
- tree.activeNode = dtnode;
- }
- if( pers.focusedKey === dtnode.data.key ){
- tree.focusNode = dtnode;
- }
- dtnode.bExpanded = ($.inArray(dtnode.data.key, pers.expandedKeyList) >= 0);
- dtnode.bSelected = ($.inArray(dtnode.data.key, pers.selectedKeyList) >= 0);
-// tree.logDebug(" key=%o, bSelected=%o", dtnode.data.key, dtnode.bSelected);
- } else {
- // Init status from data (Note: we write the cookies after the init phase)
-// tree.logDebug("init from data");
- if( dtnode.data.activate ) {
- tree.activeNode = dtnode;
- if( opts.persist ){
- pers.activeKey = dtnode.data.key;
- }
- }
- if( dtnode.data.focus ) {
- tree.focusNode = dtnode;
- if( opts.persist ){
- pers.focusedKey = dtnode.data.key;
- }
- }
- dtnode.bExpanded = ( dtnode.data.expand === true ); // Collapsed by default
- if( dtnode.bExpanded && opts.persist ){
- pers.addExpand(dtnode.data.key);
- }
- dtnode.bSelected = ( dtnode.data.select === true ); // Deselected by default
-/*
- Doesn't work, cause pers.selectedKeyList may be null
- if( dtnode.bSelected && opts.selectMode==1
- && pers.selectedKeyList && pers.selectedKeyList.length>0 ) {
- tree.logWarning("Ignored multi-selection in single-mode for %o", dtnode);
- dtnode.bSelected = false; // Fixing bad input data (multi selection for mode:1)
- }
-*/
- if( dtnode.bSelected && opts.persist ){
- pers.addSelect(dtnode.data.key);
- }
- }
-
- // Always expand, if it's below minExpandLevel
-// tree.logDebug ("%s._addChildNode(%o), l=%o", this, dtnode, dtnode.getLevel());
- if ( opts.minExpandLevel >= dtnode.getLevel() ) {
-// tree.logDebug ("Force expand for %o", dtnode);
- this.bExpanded = true;
- }
-
- // In multi-hier mode, update the parents selection state
- // issue #82: only if not initializing, because the children may not exist yet
-// if( !dtnode.data.isStatusNode && opts.selectMode==3 && !isInitializing )
-// dtnode._fixSelectionState();
-
- // In multi-hier mode, update the parents selection state
- if( dtnode.bSelected && opts.selectMode==3 ) {
- var p = this;
- while( p ) {
- if( !p.hasSubSel ){
- p._setSubSel(true);
- }
- p = p.parent;
- }
- }
- // render this node and the new child
- if ( tree.bEnableUpdate ){
- this.render();
- }
- return dtnode;
- },
-
- addChild: function(obj, beforeNode) {
- /**
- * Add a node object as child.
- *
- * This should be the only place, where a DynaTreeNode is constructed!
- * (Except for the root node creation in the tree constructor)
- *
- * @param obj A JS object (may be recursive) or an array of those.
- * @param {DynaTreeNode} beforeNode (optional) sibling node.
- *
- * Data format: array of node objects, with optional 'children' attributes.
- * [
- * { title: "t1", isFolder: true, ... }
- * { title: "t2", isFolder: true, ...,
- * children: [
- * {title: "t2.1", ..},
- * {..}
- * ]
- * }
- * ]
- * A simple object is also accepted instead of an array.
- *
- */
-// this.tree.logDebug("%s.addChild(%o, %o)", this, obj, beforeNode);
- if(typeof(obj) == "string"){
- throw "Invalid data type for " + obj;
- }else if( !obj || obj.length === 0 ){ // Passed null or undefined or empty array
- return;
- }else if( obj instanceof DynaTreeNode ){
- return this._addChildNode(obj, beforeNode);
- }
-
- if( !obj.length ){ // Passed a single data object
- obj = [ obj ];
- }
- var prevFlag = this.tree.enableUpdate(false);
-
- var tnFirst = null;
- for (var i=0, l=obj.length; i<l; i++) {
- var data = obj[i];
- var dtnode = this._addChildNode(new DynaTreeNode(this, this.tree, data), beforeNode);
- if( !tnFirst ){
- tnFirst = dtnode;
- }
- // Add child nodes recursively
- if( data.children ){
- dtnode.addChild(data.children, null);
- }
- }
- this.tree.enableUpdate(prevFlag);
- return tnFirst;
- },
-
- append: function(obj) {
- this.tree.logWarning("node.append() is deprecated (use node.addChild() instead).");
- return this.addChild(obj, null);
- },
-
- appendAjax: function(ajaxOptions) {
- var self = this;
- this.removeChildren(false, true);
- this.setLazyNodeStatus(DTNodeStatus_Loading);
- // Debug feature: force a delay, to simulate slow loading...
- if(ajaxOptions.debugLazyDelay){
- var ms = ajaxOptions.debugLazyDelay;
- ajaxOptions.debugLazyDelay = 0;
- this.tree.logInfo("appendAjax: waiting for debugLazyDelay " + ms);
- setTimeout(function(){self.appendAjax(ajaxOptions);}, ms);
- return;
- }
- // Ajax option inheritance: $.ajaxSetup < $.ui.dynatree.prototype.options.ajaxDefaults < tree.options.ajaxDefaults < ajaxOptions
- var orgSuccess = ajaxOptions.success,
- orgError = ajaxOptions.error,
- eventType = "nodeLoaded.dynatree." + this.tree.$tree.attr("id") + "." + this.data.key;
- var options = $.extend({}, this.tree.options.ajaxDefaults, ajaxOptions, {
- success: function(data, textStatus, jqXHR){
- // <this> is the request options
-// self.tree.logDebug("appendAjax().success");
- var prevPhase = self.tree.phase;
- self.tree.phase = "init";
- // postProcess is similar to the standard dataFilter hook,
- // but it is also called for JSONP
- if( options.postProcess ){
- data = options.postProcess.call(this, data, this.dataType);
- }
- // Process ASPX WebMethod JSON object inside "d" property
- // http://code.google.com/p/dynatree/issues/detail?id=202
- else if (data && data.hasOwnProperty("d")) {
- data = (typeof data.d) == "string" ? $.parseJSON(data.d) : data.d;
- }
- if(!$.isArray(data) || data.length !== 0){
- self.addChild(data, null);
- }
- self.tree.phase = "postInit";
- if( orgSuccess ){
- orgSuccess.call(options, self, data, textStatus);
- }
- self.tree.logDebug("trigger " + eventType);
- self.tree.$tree.trigger(eventType, [self, true]);
- self.tree.phase = prevPhase;
- // This should be the last command, so node._isLoading is true
- // while the callbacks run
- self.setLazyNodeStatus(DTNodeStatus_Ok);
- if($.isArray(data) && data.length === 0){
- // Set to [] which is interpreted as 'no children' for lazy
- // nodes
- self.childList = [];
- self.render();
- }
- },
- error: function(jqXHR, textStatus, errorThrown){
- // <this> is the request options
- self.tree.logWarning("appendAjax failed:", textStatus, ":\n", jqXHR, "\n", errorThrown);
- if( orgError ){
- orgError.call(options, self, jqXHR, textStatus, errorThrown);
- }
- self.tree.$tree.trigger(eventType, [self, false]);
- self.setLazyNodeStatus(DTNodeStatus_Error, {info: textStatus, tooltip: "" + errorThrown});
- }
- });
- $.ajax(options);
- },
-
- move: function(targetNode, mode) {
- /**Move this node to targetNode.
- * mode 'child': append this node as last child of targetNode.
- * This is the default. To be compatble with the D'n'd
- * hitMode, we also accept 'over'.
- * mode 'before': add this node as sibling before targetNode.
- * mode 'after': add this node as sibling after targetNode.
- */
- var pos;
- if(this === targetNode){
- return;
- }
- if( !this.parent ){
- throw "Cannot move system root";
- }
- if(mode === undefined || mode == "over"){
- mode = "child";
- }
- var prevParent = this.parent;
- var targetParent = (mode === "child") ? targetNode : targetNode.parent;
- if( targetParent.isDescendantOf(this) ){
- throw "Cannot move a node to it's own descendant";
- }
- // Unlink this node from current parent
- if( this.parent.childList.length == 1 ) {
- this.parent.childList = this.parent.data.isLazy ? [] : null;
- this.parent.bExpanded = false;
- } else {
- pos = $.inArray(this, this.parent.childList);
- if( pos < 0 ){
- throw "Internal error";
- }
- this.parent.childList.splice(pos, 1);
- }
- // Remove from source DOM parent
- if(this.parent.ul){
- this.parent.ul.removeChild(this.li);
- }
-
- // Insert this node to target parent's child list
- this.parent = targetParent;
- if( targetParent.hasChildren() ) {
- switch(mode) {
- case "child":
- // Append to existing target children
- targetParent.childList.push(this);
- break;
- case "before":
- // Insert this node before target node
- pos = $.inArray(targetNode, targetParent.childList);
- if( pos < 0 ){
- throw "Internal error";
- }
- targetParent.childList.splice(pos, 0, this);
- break;
- case "after":
- // Insert this node after target node
- pos = $.inArray(targetNode, targetParent.childList);
- if( pos < 0 ){
- throw "Internal error";
- }
- targetParent.childList.splice(pos+1, 0, this);
- break;
- default:
- throw "Invalid mode " + mode;
- }
- } else {
- targetParent.childList = [ this ];
- }
- // Parent has no <ul> tag yet:
- if( !targetParent.ul ) {
- // This is the parent's first child: create UL tag
- // (Hidden, because it will be
- targetParent.ul = document.createElement("ul");
- targetParent.ul.style.display = "none";
- targetParent.li.appendChild(targetParent.ul);
- }
- // Issue 319: Add to target DOM parent (only if node was already rendered(expanded))
- if(this.li){
- targetParent.ul.appendChild(this.li);
- }
-
- if( this.tree !== targetNode.tree ) {
- // Fix node.tree for all source nodes
- this.visit(function(node){
- node.tree = targetNode.tree;
- }, null, true);
- throw "Not yet implemented.";
- }
- // TODO: fix selection state
- // TODO: fix active state
- if( !prevParent.isDescendantOf(targetParent)) {
- prevParent.render();
- }
- if( !targetParent.isDescendantOf(prevParent) ) {
- targetParent.render();
- }
-// this.tree.redraw();
-/*
- var tree = this.tree;
- var opts = tree.options;
- var pers = tree.persistence;
-
-
- // Always expand, if it's below minExpandLevel
-// tree.logDebug ("%s._addChildNode(%o), l=%o", this, dtnode, dtnode.getLevel());
- if ( opts.minExpandLevel >= dtnode.getLevel() ) {
-// tree.logDebug ("Force expand for %o", dtnode);
- this.bExpanded = true;
- }
-
- // In multi-hier mode, update the parents selection state
- // issue #82: only if not initializing, because the children may not exist yet
-// if( !dtnode.data.isStatusNode && opts.selectMode==3 && !isInitializing )
-// dtnode._fixSelectionState();
-
- // In multi-hier mode, update the parents selection state
- if( dtnode.bSelected && opts.selectMode==3 ) {
- var p = this;
- while( p ) {
- if( !p.hasSubSel )
- p._setSubSel(true);
- p = p.parent;
- }
- }
- // render this node and the new child
- if ( tree.bEnableUpdate )
- this.render();
-
- return dtnode;
-
-*/
- },
-
- // --- end of class
- lastentry: undefined
-};
-
-/*************************************************************************
- * class DynaTreeStatus
- */
-
-var DynaTreeStatus = Class.create();
-
-
-DynaTreeStatus._getTreePersistData = function(cookieId, cookieOpts) {
- // Static member: Return persistence information from cookies
- var ts = new DynaTreeStatus(cookieId, cookieOpts);
- ts.read();
- return ts.toDict();
-};
-// Make available in global scope
-getDynaTreePersistData = DynaTreeStatus._getTreePersistData; // TODO: deprecated
-
-
-DynaTreeStatus.prototype = {
- // Constructor
- initialize: function(cookieId, cookieOpts) {
-// this._log("DynaTreeStatus: initialize");
- if( cookieId === undefined ){
- cookieId = $.ui.dynatree.prototype.options.cookieId;
- }
- cookieOpts = $.extend({}, $.ui.dynatree.prototype.options.cookie, cookieOpts);
-
- this.cookieId = cookieId;
- this.cookieOpts = cookieOpts;
- this.cookiesFound = undefined;
- this.activeKey = null;
- this.focusedKey = null;
- this.expandedKeyList = null;
- this.selectedKeyList = null;
- },
- // member functions
- _log: function(msg) {
- // this.logDebug("_changeNodeList(%o): nodeList:%o, idx:%o", mode, nodeList, idx);
- Array.prototype.unshift.apply(arguments, ["debug"]);
- _log.apply(this, arguments);
- },
- read: function() {
-// this._log("DynaTreeStatus: read");
- // Read or init cookies.
- this.cookiesFound = false;
-
- var cookie = $.cookie(this.cookieId + "-active");
- this.activeKey = ( cookie === null ) ? "" : cookie;
- if( cookie !== null ){
- this.cookiesFound = true;
- }
- cookie = $.cookie(this.cookieId + "-focus");
- this.focusedKey = ( cookie === null ) ? "" : cookie;
- if( cookie !== null ){
- this.cookiesFound = true;
- }
- cookie = $.cookie(this.cookieId + "-expand");
- this.expandedKeyList = ( cookie === null ) ? [] : cookie.split(",");
- if( cookie !== null ){
- this.cookiesFound = true;
- }
- cookie = $.cookie(this.cookieId + "-select");
- this.selectedKeyList = ( cookie === null ) ? [] : cookie.split(",");
- if( cookie !== null ){
- this.cookiesFound = true;
- }
- },
- write: function() {
-// this._log("DynaTreeStatus: write");
- $.cookie(this.cookieId + "-active", ( this.activeKey === null ) ? "" : this.activeKey, this.cookieOpts);
- $.cookie(this.cookieId + "-focus", ( this.focusedKey === null ) ? "" : this.focusedKey, this.cookieOpts);
- $.cookie(this.cookieId + "-expand", ( this.expandedKeyList === null ) ? "" : this.expandedKeyList.join(","), this.cookieOpts);
- $.cookie(this.cookieId + "-select", ( this.selectedKeyList === null ) ? "" : this.selectedKeyList.join(","), this.cookieOpts);
- },
- addExpand: function(key) {
-// this._log("addExpand(%o)", key);
- if( $.inArray(key, this.expandedKeyList) < 0 ) {
- this.expandedKeyList.push(key);
- $.cookie(this.cookieId + "-expand", this.expandedKeyList.join(","), this.cookieOpts);
- }
- },
- clearExpand: function(key) {
-// this._log("clearExpand(%o)", key);
- var idx = $.inArray(key, this.expandedKeyList);
- if( idx >= 0 ) {
- this.expandedKeyList.splice(idx, 1);
- $.cookie(this.cookieId + "-expand", this.expandedKeyList.join(","), this.cookieOpts);
- }
- },
- addSelect: function(key) {
-// this._log("addSelect(%o)", key);
- if( $.inArray(key, this.selectedKeyList) < 0 ) {
- this.selectedKeyList.push(key);
- $.cookie(this.cookieId + "-select", this.selectedKeyList.join(","), this.cookieOpts);
- }
- },
- clearSelect: function(key) {
-// this._log("clearSelect(%o)", key);
- var idx = $.inArray(key, this.selectedKeyList);
- if( idx >= 0 ) {
- this.selectedKeyList.splice(idx, 1);
- $.cookie(this.cookieId + "-select", this.selectedKeyList.join(","), this.cookieOpts);
- }
- },
- isReloading: function() {
- return this.cookiesFound === true;
- },
- toDict: function() {
- return {
- cookiesFound: this.cookiesFound,
- activeKey: this.activeKey,
- focusedKey: this.activeKey,
- expandedKeyList: this.expandedKeyList,
- selectedKeyList: this.selectedKeyList
- };
- },
- // --- end of class
- lastentry: undefined
-};
-
-
-/*************************************************************************
- * class DynaTree
- */
-
-var DynaTree = Class.create();
-
-// --- Static members ----------------------------------------------------------
-
-DynaTree.version = "$Version: 1.2.4$";
-
-/*
-DynaTree._initTree = function() {
-};
-
-DynaTree._bind = function() {
-};
-*/
-//--- Class members ------------------------------------------------------------
-
-DynaTree.prototype = {
- // Constructor
-// initialize: function(divContainer, options) {
- initialize: function($widget) {
- // instance members
- this.phase = "init";
- this.$widget = $widget;
- this.options = $widget.options;
- this.$tree = $widget.element;
- this.timer = null;
- // find container element
- this.divTree = this.$tree.get(0);
-
-// var parentPos = $(this.divTree).parent().offset();
-// this.parentTop = parentPos.top;
-// this.parentLeft = parentPos.left;
-
- _initDragAndDrop(this);
- },
-
- // member functions
-
- _load: function(callback) {
- var $widget = this.$widget;
- var opts = this.options,
- self = this;
- this.bEnableUpdate = true;
- this._nodeCount = 1;
- this.activeNode = null;
- this.focusNode = null;
-
- // Some deprecation warnings to help with migration
- if( opts.rootVisible !== undefined ){
- this.logWarning("Option 'rootVisible' is no longer supported.");
- }
- if( opts.minExpandLevel < 1 ) {
- this.logWarning("Option 'minExpandLevel' must be >= 1.");
- opts.minExpandLevel = 1;
- }
-// _log("warn", "jQuery.support.boxModel " + jQuery.support.boxModel);
-
- // If a 'options.classNames' dictionary was passed, still use defaults
- // for undefined classes:
- if( opts.classNames !== $.ui.dynatree.prototype.options.classNames ) {
- opts.classNames = $.extend({}, $.ui.dynatree.prototype.options.classNames, opts.classNames);
- }
- if( opts.ajaxDefaults !== $.ui.dynatree.prototype.options.ajaxDefaults ) {
- opts.ajaxDefaults = $.extend({}, $.ui.dynatree.prototype.options.ajaxDefaults, opts.ajaxDefaults);
- }
- if( opts.dnd !== $.ui.dynatree.prototype.options.dnd ) {
- opts.dnd = $.extend({}, $.ui.dynatree.prototype.options.dnd, opts.dnd);
- }
- // Guess skin path, if not specified
- if(!opts.imagePath) {
- $("script").each( function () {
- var _rexDtLibName = /.*dynatree[^\/]*\.js$/i;
- if( this.src.search(_rexDtLibName) >= 0 ) {
- if( this.src.indexOf("/")>=0 ){ // issue #47
- opts.imagePath = this.src.slice(0, this.src.lastIndexOf("/")) + "/skin/";
- }else{
- opts.imagePath = "skin/";
- }
- self.logDebug("Guessing imagePath from '%s': '%s'", this.src, opts.imagePath);
- return false; // first match
- }
- });
- }
-
- this.persistence = new DynaTreeStatus(opts.cookieId, opts.cookie);
- if( opts.persist ) {
- if( !$.cookie ){
- _log("warn", "Please include jquery.cookie.js to use persistence.");
- }
- this.persistence.read();
- }
- this.logDebug("DynaTree.persistence: %o", this.persistence.toDict());
-
- // Cached tag strings
- this.cache = {
- tagEmpty: "<span class='" + opts.classNames.empty + "'></span>",
- tagVline: "<span class='" + opts.classNames.vline + "'></span>",
- tagExpander: "<span class='" + opts.classNames.expander + "'></span>",
- tagConnector: "<span class='" + opts.classNames.connector + "'></span>",
- tagNodeIcon: "<span class='" + opts.classNames.nodeIcon + "'></span>",
- tagCheckbox: "<span class='" + opts.classNames.checkbox + "'></span>",
- lastentry: undefined
- };
-
- // Clear container, in case it contained some 'waiting' or 'error' text
- // for clients that don't support JS.
- // We don't do this however, if we try to load from an embedded UL element.
- if( opts.children || (opts.initAjax && opts.initAjax.url) || opts.initId ){
- $(this.divTree).empty();
- }
- var $ulInitialize = this.$tree.find(">ul:first").hide();
-
- // Create the root element
- this.tnRoot = new DynaTreeNode(null, this, {});
- this.tnRoot.bExpanded = true;
- this.tnRoot.render();
- this.divTree.appendChild(this.tnRoot.ul);
-
- var root = this.tnRoot,
- isReloading = ( opts.persist && this.persistence.isReloading() ),
- isLazy = false,
- prevFlag = this.enableUpdate(false);
-
- this.logDebug("Dynatree._load(): read tree structure...");
-
- // Init tree structure
- if( opts.children ) {
- // Read structure from node array
- root.addChild(opts.children);
-
- } else if( opts.initAjax && opts.initAjax.url ) {
- // Init tree from AJAX request
- isLazy = true;
- root.data.isLazy = true;
- this._reloadAjax(callback);
-
- } else if( opts.initId ) {
- // Init tree from another UL element
- this._createFromTag(root, $("#"+opts.initId));
-
- } else {
- // Init tree from the first UL element inside the container <div>
-// var $ul = this.$tree.find(">ul:first").hide();
- this._createFromTag(root, $ulInitialize);
- $ulInitialize.remove();
- }
-
- this._checkConsistency();
- // Fix part-sel flags
- if(!isLazy && opts.selectMode == 3){
- root._updatePartSelectionState();
- }
- // Render html markup
- this.logDebug("Dynatree._load(): render nodes...");
- this.enableUpdate(prevFlag);
-
- // bind event handlers
- this.logDebug("Dynatree._load(): bind events...");
- this.$widget.bind();
-
- // --- Post-load processing
- this.logDebug("Dynatree._load(): postInit...");
- this.phase = "postInit";
-
- // In persist mode, make sure that cookies are written, even if they are empty
- if( opts.persist ) {
- this.persistence.write();
- }
- // Set focus, if possible (this will also fire an event and write a cookie)
- if( this.focusNode && this.focusNode.isVisible() ) {
- this.logDebug("Focus on init: %o", this.focusNode);
- this.focusNode.focus();
- }
- if( !isLazy ) {
- if( opts.onPostInit ) {
- opts.onPostInit.call(this, isReloading, false);
- }
- if( callback ){
- callback.call(this, "ok");
- }
- }
- this.phase = "idle";
- },
-
- _reloadAjax: function(callback) {
- // Reload
- var opts = this.options;
- if( ! opts.initAjax || ! opts.initAjax.url ){
- throw "tree.reload() requires 'initAjax' mode.";
- }
- var pers = this.persistence;
- var ajaxOpts = $.extend({}, opts.initAjax);
- // Append cookie info to the request
-// this.logDebug("reloadAjax: key=%o, an.key:%o", pers.activeKey, this.activeNode?this.activeNode.data.key:"?");
- if( ajaxOpts.addActiveKey ){
- ajaxOpts.data.activeKey = pers.activeKey;
- }
- if( ajaxOpts.addFocusedKey ){
- ajaxOpts.data.focusedKey = pers.focusedKey;
- }
- if( ajaxOpts.addExpandedKeyList ){
- ajaxOpts.data.expandedKeyList = pers.expandedKeyList.join(",");
- }
- if( ajaxOpts.addSelectedKeyList ){
- ajaxOpts.data.selectedKeyList = pers.selectedKeyList.join(",");
- }
- // Set up onPostInit callback to be called when Ajax returns
- if( ajaxOpts.success ){
- this.logWarning("initAjax: success callback is ignored; use onPostInit instead.");
- }
- if( ajaxOpts.error ){
- this.logWarning("initAjax: error callback is ignored; use onPostInit instead.");
- }
- var isReloading = pers.isReloading();
- ajaxOpts.success = function(dtnode, data, textStatus) {
- if(opts.selectMode == 3){
- dtnode.tree.tnRoot._updatePartSelectionState();
- }
- if(opts.onPostInit){
- opts.onPostInit.call(dtnode.tree, isReloading, false);
- }
- if(callback){
- callback.call(dtnode.tree, "ok");
- }
- };
- ajaxOpts.error = function(dtnode, XMLHttpRequest, textStatus, errorThrown) {
- if(opts.onPostInit){
- opts.onPostInit.call(dtnode.tree, isReloading, true, XMLHttpRequest, textStatus, errorThrown);
- }
- if(callback){
- callback.call(dtnode.tree, "error", XMLHttpRequest, textStatus, errorThrown);
- }
- };
-// }
- this.logDebug("Dynatree._init(): send Ajax request...");
- this.tnRoot.appendAjax(ajaxOpts);
- },
-
- toString: function() {
-// return "DynaTree '" + this.options.title + "'";
- return "Dynatree '" + this.$tree.attr("id") + "'";
- },
-
- toDict: function() {
- return this.tnRoot.toDict(true);
- },
-
- serializeArray: function(stopOnParents) {
- // Return a JavaScript array of objects, ready to be encoded as a JSON
- // string for selected nodes
- var nodeList = this.getSelectedNodes(stopOnParents),
- name = this.$tree.attr("name") || this.$tree.attr("id"),
- arr = [];
- for(var i=0, l=nodeList.length; i<l; i++){
- arr.push({name: name, value: nodeList[i].data.key});
- }
- return arr;
- },
-
- getPersistData: function() {
- return this.persistence.toDict();
- },
-
- logDebug: function(msg) {
- if( this.options.debugLevel >= 2 ) {
- Array.prototype.unshift.apply(arguments, ["debug"]);
- _log.apply(this, arguments);
- }
- },
-
- logInfo: function(msg) {
- if( this.options.debugLevel >= 1 ) {
- Array.prototype.unshift.apply(arguments, ["info"]);
- _log.apply(this, arguments);
- }
- },
-
- logWarning: function(msg) {
- Array.prototype.unshift.apply(arguments, ["warn"]);
- _log.apply(this, arguments);
- },
-
- isInitializing: function() {
- return ( this.phase=="init" || this.phase=="postInit" );
- },
- isReloading: function() {
- return ( this.phase=="init" || this.phase=="postInit" ) && this.options.persist && this.persistence.cookiesFound;
- },
- isUserEvent: function() {
- return ( this.phase=="userEvent" );
- },
-
- redraw: function() {
-// this.logDebug("dynatree.redraw()...");
- this.tnRoot.render(false, false);
-// this.logDebug("dynatree.redraw() done.");
- },
- renderInvisibleNodes: function() {
- this.tnRoot.render(false, true);
- },
- reload: function(callback) {
- this._load(callback);
- },
-
- getRoot: function() {
- return this.tnRoot;
- },
-
- enable: function() {
- this.$widget.enable();
- },
-
- disable: function() {
- this.$widget.disable();
- },
-
- getNodeByKey: function(key) {
- // Search the DOM by element ID (assuming this is faster than traversing all nodes).
- // $("#...") has problems, if the key contains '.', so we use getElementById()
- var el = document.getElementById(this.options.idPrefix + key);
- if( el ){
- return el.dtnode ? el.dtnode : null;
- }
- // Not found in the DOM, but still may be in an unrendered part of tree
- var match = null;
- this.visit(function(node){
-// window.console.log("%s", node);
- if(node.data.key === key) {
- match = node;
- return false;
- }
- }, true);
- return match;
- },
-
- getActiveNode: function() {
- return this.activeNode;
- },
-
- reactivate: function(setFocus) {
- // Re-fire onQueryActivate and onActivate events.
- var node = this.activeNode;
-// this.logDebug("reactivate %o", node);
- if( node ) {
- this.activeNode = null; // Force re-activating
- node.activate();
- if( setFocus ){
- node.focus();
- }
- }
- },
-
- getSelectedNodes: function(stopOnParents) {
- var nodeList = [];
- this.tnRoot.visit(function(node){
- if( node.bSelected ) {
- nodeList.push(node);
- if( stopOnParents === true ){
- return "skip"; // stop processing this branch
- }
- }
- });
- return nodeList;
- },
-
- activateKey: function(key) {
- var dtnode = (key === null) ? null : this.getNodeByKey(key);
- if( !dtnode ) {
- if( this.activeNode ){
- this.activeNode.deactivate();
- }
- this.activeNode = null;
- return null;
- }
- dtnode.focus();
- dtnode.activate();
- return dtnode;
- },
-
- loadKeyPath: function(keyPath, callback) {
- var segList = keyPath.split(this.options.keyPathSeparator);
- // Remove leading '/'
- if(segList[0] === ""){
- segList.shift();
- }
- // Remove leading system root key
- if(segList[0] == this.tnRoot.data.key){
- this.logDebug("Removed leading root key.");
- segList.shift();
- }
- keyPath = segList.join(this.options.keyPathSeparator);
- return this.tnRoot._loadKeyPath(keyPath, callback);
- },
-
- selectKey: function(key, select) {
- var dtnode = this.getNodeByKey(key);
- if( !dtnode ){
- return null;
- }
- dtnode.select(select);
- return dtnode;
- },
-
- enableUpdate: function(bEnable) {
- if ( this.bEnableUpdate==bEnable ){
- return bEnable;
- }
- this.bEnableUpdate = bEnable;
- if ( bEnable ){
- this.redraw();
- }
- return !bEnable; // return previous value
- },
-
- count: function() {
- return this.tnRoot.countChildren();
- },
-
- visit: function(fn, includeRoot) {
- return this.tnRoot.visit(fn, includeRoot);
- },
-
- _createFromTag: function(parentTreeNode, $ulParent) {
- // Convert a <UL>...</UL> list into children of the parent tree node.
- var self = this;
-/*
-TODO: better?
- this.$lis = $("li:has(a[href])", this.element);
- this.$tabs = this.$lis.map(function() { return $("a", this)[0]; });
- */
- $ulParent.find(">li").each(function() {
- var $li = $(this),
- $liSpan = $li.find(">span:first"),
- $liA = $li.find(">a:first"),
- title,
- href = null,
- target = null,
- tooltip;
- if( $liSpan.length ) {
- // If a <li><span> tag is specified, use it literally.
- title = $liSpan.html();
- } else if( $liA.length ) {
- title = $liA.html();
- href = $liA.attr("href");
- target = $liA.attr("target");
- tooltip = $liA.attr("title");
- } else {
- // If only a <li> tag is specified, use the trimmed string up to
- // the next child <ul> tag.
- title = $li.html();
- var iPos = title.search(/<ul/i);
- if( iPos >= 0 ){
- title = $.trim(title.substring(0, iPos));
- }else{
- title = $.trim(title);
- }
-// self.logDebug("%o", title);
- }
- // Parse node options from ID, title and class attributes
- var data = {
- title: title,
- tooltip: tooltip,
- isFolder: $li.hasClass("folder"),
- isLazy: $li.hasClass("lazy"),
- expand: $li.hasClass("expanded"),
- select: $li.hasClass("selected"),
- activate: $li.hasClass("active"),
- focus: $li.hasClass("focused"),
- noLink: $li.hasClass("noLink")
- };
- if( href ){
- data.href = href;
- data.target = target;
- }
- if( $li.attr("title") ){
- data.tooltip = $li.attr("title"); // overrides <a title='...'>
- }
- if( $li.attr("id") ){
- data.key = "" + $li.attr("id");
- }
- // If a data attribute is present, evaluate as a JavaScript object
- if( $li.attr("data") ) {
- var dataAttr = $.trim($li.attr("data"));
- if( dataAttr ) {
- if( dataAttr.charAt(0) != "{" ){
- dataAttr = "{" + dataAttr + "}";
- }
- try {
- $.extend(data, eval("(" + dataAttr + ")"));
- } catch(e) {
- throw ("Error parsing node data: " + e + "\ndata:\n'" + dataAttr + "'");
- }
- }
- }
- var childNode = parentTreeNode.addChild(data);
- // Recursive reading of child nodes, if LI tag contains an UL tag
- var $ul = $li.find(">ul:first");
- if( $ul.length ) {
- self._createFromTag(childNode, $ul); // must use 'self', because 'this' is the each() context
- }
- });
- },
-
- _checkConsistency: function() {
-// this.logDebug("tree._checkConsistency() NOT IMPLEMENTED - %o", this);
- },
-
- _setDndStatus: function(sourceNode, targetNode, helper, hitMode, accept) {
- // hitMode: 'after', 'before', 'over', 'out', 'start', 'stop'
- var $source = sourceNode ? $(sourceNode.span) : null,
- $target = $(targetNode.span);
- if( !this.$dndMarker ) {
- this.$dndMarker = $("<div id='dynatree-drop-marker'></div>")
- .hide()
- .css({"z-index": 1000})
- .prependTo($(this.divTree).parent());
-
-// logMsg("Creating marker: %o", this.$dndMarker);
- }
-/*
- if(hitMode === "start"){
- }
- if(hitMode === "stop"){
-// sourceNode.removeClass("dynatree-drop-target");
- }
-*/
- if(hitMode === "after" || hitMode === "before" || hitMode === "over"){
-// $source && $source.addClass("dynatree-drag-source");
-// $target.addClass("dynatree-drop-target");
-
- var markerOffset = "0 0";
-
- switch(hitMode){
- case "before":
- this.$dndMarker.removeClass("dynatree-drop-after dynatree-drop-over");
- this.$dndMarker.addClass("dynatree-drop-before");
- markerOffset = "0 -8";
- break;
- case "after":
- this.$dndMarker.removeClass("dynatree-drop-before dynatree-drop-over");
- this.$dndMarker.addClass("dynatree-drop-after");
- markerOffset = "0 8";
- break;
- default:
- this.$dndMarker.removeClass("dynatree-drop-after dynatree-drop-before");
- this.$dndMarker.addClass("dynatree-drop-over");
- $target.addClass("dynatree-drop-target");
- markerOffset = "8 0";
- }
-// logMsg("Creating marker: %o", this.$dndMarker);
-// logMsg(" $target.offset=%o", $target);
-// logMsg(" pos/$target.offset=%o", pos);
-// logMsg(" $target.position=%o", $target.position());
-// logMsg(" $target.offsetParent=%o, ot:%o", $target.offsetParent(), $target.offsetParent().offset());
-// logMsg(" $(this.divTree).offset=%o", $(this.divTree).offset());
-// logMsg(" $(this.divTree).parent=%o", $(this.divTree).parent());
-// var pos = $target.offset();
-// var parentPos = $target.offsetParent().offset();
-// var bodyPos = $target.offsetParent().offset();
-
- this.$dndMarker
- .show()
- .position({
- my: "left top",
- at: "left top",
- of: $target,
- offset: markerOffset
- });
-
-// helper.addClass("dynatree-drop-hover");
- } else {
-// $source && $source.removeClass("dynatree-drag-source");
- $target.removeClass("dynatree-drop-target");
- this.$dndMarker.hide();
-// helper.removeClass("dynatree-drop-hover");
- }
- if(hitMode === "after"){
- $target.addClass("dynatree-drop-after");
- } else {
- $target.removeClass("dynatree-drop-after");
- }
- if(hitMode === "before"){
- $target.addClass("dynatree-drop-before");
- } else {
- $target.removeClass("dynatree-drop-before");
- }
- if(accept === true){
- if($source){
- $source.addClass("dynatree-drop-accept");
- }
- $target.addClass("dynatree-drop-accept");
- helper.addClass("dynatree-drop-accept");
- }else{
- if($source){
- $source.removeClass("dynatree-drop-accept");
- }
- $target.removeClass("dynatree-drop-accept");
- helper.removeClass("dynatree-drop-accept");
- }
- if(accept === false){
- if($source){
- $source.addClass("dynatree-drop-reject");
- }
- $target.addClass("dynatree-drop-reject");
- helper.addClass("dynatree-drop-reject");
- }else{
- if($source){
- $source.removeClass("dynatree-drop-reject");
- }
- $target.removeClass("dynatree-drop-reject");
- helper.removeClass("dynatree-drop-reject");
- }
- },
-
- _onDragEvent: function(eventName, node, otherNode, event, ui, draggable) {
- /**
- * Handles drag'n'drop functionality.
- *
- * A standard jQuery drag-and-drop process may generate these calls:
- *
- * draggable helper():
- * _onDragEvent("helper", sourceNode, null, event, null, null);
- * start:
- * _onDragEvent("start", sourceNode, null, event, ui, draggable);
- * drag:
- * _onDragEvent("leave", prevTargetNode, sourceNode, event, ui, draggable);
- * _onDragEvent("over", targetNode, sourceNode, event, ui, draggable);
- * _onDragEvent("enter", targetNode, sourceNode, event, ui, draggable);
- * stop:
- * _onDragEvent("drop", targetNode, sourceNode, event, ui, draggable);
- * _onDragEvent("leave", targetNode, sourceNode, event, ui, draggable);
- * _onDragEvent("stop", sourceNode, null, event, ui, draggable);
- */
-// if(eventName !== "over"){
-// this.logDebug("tree._onDragEvent(%s, %o, %o) - %o", eventName, node, otherNode, this);
-// }
- var opts = this.options,
- dnd = this.options.dnd,
- res = null,
- nodeTag = $(node.span),
- hitMode,
- enterResponse;
-
- switch (eventName) {
- case "helper":
- // Only event and node argument is available
- var $helper = $("<div class='dynatree-drag-helper'><span class='dynatree-drag-helper-img' /></div>")
- .append($(event.target).closest(".dynatree-title").clone());
-// .append($(event.target).closest('a').clone());
- // issue 244: helper should be child of scrollParent
- $("ul.dynatree-container", node.tree.divTree).append($helper);
-// $(node.tree.divTree).append($helper);
- // Attach node reference to helper object
- $helper.data("dtSourceNode", node);
-// this.logDebug("helper=%o", $helper);
-// this.logDebug("helper.sourceNode=%o", $helper.data("dtSourceNode"));
- res = $helper;
- break;
- case "start":
- if(node.isStatusNode()) {
- res = false;
- } else if(dnd.onDragStart) {
- res = dnd.onDragStart(node);
- }
- if(res === false) {
- this.logDebug("tree.onDragStart() cancelled");
- //draggable._clear();
- // NOTE: the return value seems to be ignored (drag is not canceled, when false is returned)
- ui.helper.trigger("mouseup");
- ui.helper.hide();
- } else {
- nodeTag.addClass("dynatree-drag-source");
- }
- break;
- case "enter":
- res = dnd.onDragEnter ? dnd.onDragEnter(node, otherNode) : null;
- if(!res){
- // convert null, undefined, false to false
- res = false;
- }else{
- res = {
- over: ((res === true) || (res === "over") || $.inArray("over", res) >= 0),
- before: ((res === true) || (res === "before") || $.inArray("before", res) >= 0),
- after: ((res === true) || (res === "after") || $.inArray("after", res) >= 0)
- };
- }
- ui.helper.data("enterResponse", res);
-// this.logDebug("helper.enterResponse: %o", res);
- break;
- case "over":
- enterResponse = ui.helper.data("enterResponse");
- hitMode = null;
- if(enterResponse === false){
- // Don't call onDragOver if onEnter returned false.
- // issue 332
-// break;
- } else if(typeof enterResponse === "string") {
- // Use hitMode from onEnter if provided.
- hitMode = enterResponse;
- } else {
- // Calculate hitMode from relative cursor position.
- var nodeOfs = nodeTag.offset();
-// var relPos = { x: event.clientX - nodeOfs.left,
-// y: event.clientY - nodeOfs.top };
-// nodeOfs.top += this.parentTop;
-// nodeOfs.left += this.parentLeft;
- var relPos = { x: event.pageX - nodeOfs.left,
- y: event.pageY - nodeOfs.top };
- var relPos2 = { x: relPos.x / nodeTag.width(),
- y: relPos.y / nodeTag.height() };
-// this.logDebug("event.page: %s/%s", event.pageX, event.pageY);
-// this.logDebug("event.client: %s/%s", event.clientX, event.clientY);
-// this.logDebug("nodeOfs: %s/%s", nodeOfs.left, nodeOfs.top);
-//// this.logDebug("parent: %s/%s", this.parentLeft, this.parentTop);
-// this.logDebug("relPos: %s/%s", relPos.x, relPos.y);
-// this.logDebug("relPos2: %s/%s", relPos2.x, relPos2.y);
- if( enterResponse.after && relPos2.y > 0.75 ){
- hitMode = "after";
- } else if(!enterResponse.over && enterResponse.after && relPos2.y > 0.5 ){
- hitMode = "after";
- } else if(enterResponse.before && relPos2.y <= 0.25) {
- hitMode = "before";
- } else if(!enterResponse.over && enterResponse.before && relPos2.y <= 0.5) {
- hitMode = "before";
- } else if(enterResponse.over) {
- hitMode = "over";
- }
- // Prevent no-ops like 'before source node'
- // TODO: these are no-ops when moving nodes, but not in copy mode
- if( dnd.preventVoidMoves ){
- if(node === otherNode){
-// this.logDebug(" drop over source node prevented");
- hitMode = null;
- }else if(hitMode === "before" && otherNode && node === otherNode.getNextSibling()){
-// this.logDebug(" drop after source node prevented");
- hitMode = null;
- }else if(hitMode === "after" && otherNode && node === otherNode.getPrevSibling()){
-// this.logDebug(" drop before source node prevented");
- hitMode = null;
- }else if(hitMode === "over" && otherNode && otherNode.parent === node && otherNode.isLastSibling() ){
-// this.logDebug(" drop last child over own parent prevented");
- hitMode = null;
- }
- }
-// this.logDebug("hitMode: %s - %s - %s", hitMode, (node.parent === otherNode), node.isLastSibling());
- ui.helper.data("hitMode", hitMode);
- }
- // Auto-expand node (only when 'over' the node, not 'before', or 'after')
- if(hitMode === "over" && dnd.autoExpandMS && node.hasChildren() !== false && !node.bExpanded) {
- node.scheduleAction("expand", dnd.autoExpandMS);
- }
- if(hitMode && dnd.onDragOver){
- res = dnd.onDragOver(node, otherNode, hitMode);
- if(res === "over" || res === "before" || res === "after") {
- hitMode = res;
- }
- }
- // issue 332
-// this._setDndStatus(otherNode, node, ui.helper, hitMode, res!==false);
- this._setDndStatus(otherNode, node, ui.helper, hitMode, res!==false && hitMode !== null);
- break;
- case "drop":
- // issue 286: don't trigger onDrop, if DnD status is 'reject'
- var isForbidden = ui.helper.hasClass("dynatree-drop-reject");
- hitMode = ui.helper.data("hitMode");
- if(hitMode && dnd.onDrop && !isForbidden){
- dnd.onDrop(node, otherNode, hitMode, ui, draggable);
- }
- break;
- case "leave":
- // Cancel pending expand request
- node.scheduleAction("cancel");
- ui.helper.data("enterResponse", null);
- ui.helper.data("hitMode", null);
- this._setDndStatus(otherNode, node, ui.helper, "out", undefined);
- if(dnd.onDragLeave){
- dnd.onDragLeave(node, otherNode);
- }
- break;
- case "stop":
- nodeTag.removeClass("dynatree-drag-source");
- if(dnd.onDragStop){
- dnd.onDragStop(node);
- }
- break;
- default:
- throw "Unsupported drag event: " + eventName;
- }
- return res;
- },
-
- cancelDrag: function() {
- var dd = $.ui.ddmanager.current;
- if(dd){
- dd.cancel();
- }
- },
-
- // --- end of class
- lastentry: undefined
-};
-
-/*************************************************************************
- * Widget $(..).dynatree
- */
-
-$.widget("ui.dynatree", {
-/*
- init: function() {
- // ui.core 1.6 renamed init() to _init(): this stub assures backward compatibility
- _log("warn", "ui.dynatree.init() was called; you should upgrade to jquery.ui.core.js v1.8 or higher.");
- return this._init();
- },
- */
- _init: function() {
-// if( parseFloat($.ui.version) < 1.8 ) {
- if(versionCompare($.ui.version, "1.8") < 0){
- // jquery.ui.core 1.8 renamed _init() to _create(): this stub assures backward compatibility
- if(this.options.debugLevel >= 0){
- _log("warn", "ui.dynatree._init() was called; you should upgrade to jquery.ui.core.js v1.8 or higher.");
- }
- return this._create();
- }
- // jquery.ui.core 1.8 still uses _init() to perform "default functionality"
- if(this.options.debugLevel >= 2){
- _log("debug", "ui.dynatree._init() was called; no current default functionality.");
- }
- },
-
- _create: function() {
- var opts = this.options;
- if(opts.debugLevel >= 1){
- logMsg("Dynatree._create(): version='%s', debugLevel=%o.", $.ui.dynatree.version, this.options.debugLevel);
- }
- // The widget framework supplies this.element and this.options.
- this.options.event += ".dynatree"; // namespace event
-
- var divTree = this.element.get(0);
-/* // Clear container, in case it contained some 'waiting' or 'error' text
- // for clients that don't support JS
- if( opts.children || (opts.initAjax && opts.initAjax.url) || opts.initId )
- $(divTree).empty();
-*/
- // Create the DynaTree object
- this.tree = new DynaTree(this);
- this.tree._load();
- this.tree.logDebug("Dynatree._init(): done.");
- },
-
- bind: function() {
- // Prevent duplicate binding
- this.unbind();
-
- var eventNames = "click.dynatree dblclick.dynatree";
- if( this.options.keyboard ){
- // Note: leading ' '!
- eventNames += " keypress.dynatree keydown.dynatree";
- }
- this.element.bind(eventNames, function(event){
- var dtnode = $.ui.dynatree.getNode(event.target);
- if( !dtnode ){
- return true; // Allow bubbling of other events
- }
- var tree = dtnode.tree;
- var o = tree.options;
- tree.logDebug("event(%s): dtnode: %s", event.type, dtnode);
- var prevPhase = tree.phase;
- tree.phase = "userEvent";
- try {
- switch(event.type) {
- case "click":
- return ( o.onClick && o.onClick.call(tree, dtnode, event)===false ) ? false : dtnode._onClick(event);
- case "dblclick":
- return ( o.onDblClick && o.onDblClick.call(tree, dtnode, event)===false ) ? false : dtnode._onDblClick(event);
- case "keydown":
- return ( o.onKeydown && o.onKeydown.call(tree, dtnode, event)===false ) ? false : dtnode._onKeydown(event);
- case "keypress":
- return ( o.onKeypress && o.onKeypress.call(tree, dtnode, event)===false ) ? false : dtnode._onKeypress(event);
- }
- } catch(e) {
- var _ = null; // issue 117
- tree.logWarning("bind(%o): dtnode: %o, error: %o", event, dtnode, e);
- } finally {
- tree.phase = prevPhase;
- }
- });
-
- // focus/blur don't bubble, i.e. are not delegated to parent <div> tags,
- // so we use the addEventListener capturing phase.
- // See http://www.howtocreate.co.uk/tutorials/javascript/domevents
- function __focusHandler(event) {
- // Handles blur and focus.
- // Fix event for IE:
- // doesn't pass JSLint:
-// event = arguments[0] = $.event.fix( event || window.event );
- // what jQuery does:
-// var args = jQuery.makeArray( arguments );
-// event = args[0] = jQuery.event.fix( event || window.event );
- event = $.event.fix( event || window.event );
- var dtnode = $.ui.dynatree.getNode(event.target);
- return dtnode ? dtnode._onFocus(event) : false;
- }
- var div = this.tree.divTree;
-
- if( div.addEventListener ) {
- div.addEventListener("focus", __focusHandler, true);
- div.addEventListener("blur", __focusHandler, true);
- } else {
- div.onfocusin = div.onfocusout = __focusHandler;
- }
- // EVENTS
- // disable click if event is configured to something else
-// if (!(/^click/).test(o.event))
-// this.$tabs.bind("click.tabs", function() { return false; });
-
- },
-
- unbind: function() {
- this.element.unbind(".dynatree");
- },
-
-/* TODO: we could handle option changes during runtime here (maybe to re-render, ...)
- setData: function(key, value) {
- this.tree.logDebug("dynatree.setData('" + key + "', '" + value + "')");
- },
-*/
- enable: function() {
- this.bind();
- // Call default disable(): remove -disabled from css:
- $.Widget.prototype.enable.apply(this, arguments);
- },
-
- disable: function() {
- this.unbind();
- // Call default disable(): add -disabled to css:
- $.Widget.prototype.disable.apply(this, arguments);
- },
-
- // --- getter methods (i.e. NOT returning a reference to $)
- getTree: function() {
- return this.tree;
- },
-
- getRoot: function() {
- return this.tree.getRoot();
- },
-
- getActiveNode: function() {
- return this.tree.getActiveNode();
- },
-
- getSelectedNodes: function() {
- return this.tree.getSelectedNodes();
- },
-
- // ------------------------------------------------------------------------
- lastentry: undefined
-});
-
-
-// The following methods return a value (thus breaking the jQuery call chain):
-if(versionCompare($.ui.version, "1.8") < 0){
-//if( parseFloat($.ui.version) < 1.8 ) {
- $.ui.dynatree.getter = "getTree getRoot getActiveNode getSelectedNodes";
-}
-
-/*******************************************************************************
- * Tools in ui.dynatree namespace
- */
-$.ui.dynatree.version = "$Version: 1.2.4$";
-
-/**
- * Return a DynaTreeNode object for a given DOM element
- */
-$.ui.dynatree.getNode = function(el) {
- if(el instanceof DynaTreeNode){
- return el; // el already was a DynaTreeNode
- }
- if(el.selector !== undefined){
- el = el[0]; // el was a jQuery object: use the DOM element
- }
- // TODO: for some reason $el.parents("[dtnode]") does not work (jQuery 1.6.1)
- // maybe, because dtnode is a property, not an attribute
- while( el ) {
- if(el.dtnode) {
- return el.dtnode;
- }
- el = el.parentNode;
- }
- return null;
-/*
- var $el = el.selector === undefined ? $(el) : el,
-// parent = $el.closest("[dtnode]"),
-// parent = $el.parents("[dtnode]").first(),
- useProp = (typeof $el.prop == "function"),
- node;
- $el.parents().each(function(){
- node = useProp ? $(this).prop("dtnode") : $(this).attr("dtnode");
- if(node){
- return false;
- }
- });
- return node;
-*/
-};
-
-/**Return persistence information from cookies.*/
-$.ui.dynatree.getPersistData = DynaTreeStatus._getTreePersistData;
-
-/*******************************************************************************
- * Plugin default options:
- */
-$.ui.dynatree.prototype.options = {
- title: "Dynatree", // Tree's name (only used for debug output)
- minExpandLevel: 1, // 1: root node is not collapsible
- imagePath: null, // Path to a folder containing icons. Defaults to 'skin/' subdirectory.
- children: null, // Init tree structure from this object array.
- initId: null, // Init tree structure from a <ul> element with this ID.
- initAjax: null, // Ajax options used to initialize the tree strucuture.
- autoFocus: true, // Set focus to first child, when expanding or lazy-loading.
- keyboard: true, // Support keyboard navigation.
- persist: false, // Persist expand-status to a cookie
- autoCollapse: false, // Automatically collapse all siblings, when a node is expanded.
- clickFolderMode: 3, // 1:activate, 2:expand, 3:activate and expand
- activeVisible: true, // Make sure, active nodes are visible (expanded).
- checkbox: false, // Show checkboxes.
- selectMode: 2, // 1:single, 2:multi, 3:multi-hier
- fx: null, // Animations, e.g. null or { height: "toggle", duration: 200 }
- noLink: false, // Use <span> instead of <a> tags for all nodes
- // Low level event handlers: onEvent(dtnode, event): return false, to stop default processing
- onClick: null, // null: generate focus, expand, activate, select events.
- onDblClick: null, // (No default actions.)
- onKeydown: null, // null: generate keyboard navigation (focus, expand, activate).
- onKeypress: null, // (No default actions.)
- onFocus: null, // null: set focus to node.
- onBlur: null, // null: remove focus from node.
-
- // Pre-event handlers onQueryEvent(flag, dtnode): return false, to stop processing
- onQueryActivate: null, // Callback(flag, dtnode) before a node is (de)activated.
- onQuerySelect: null, // Callback(flag, dtnode) before a node is (de)selected.
- onQueryExpand: null, // Callback(flag, dtnode) before a node is expanded/collpsed.
-
- // High level event handlers
- onPostInit: null, // Callback(isReloading, isError) when tree was (re)loaded.
- onActivate: null, // Callback(dtnode) when a node is activated.
- onDeactivate: null, // Callback(dtnode) when a node is deactivated.
- onSelect: null, // Callback(flag, dtnode) when a node is (de)selected.
- onExpand: null, // Callback(flag, dtnode) when a node is expanded/collapsed.
- onLazyRead: null, // Callback(dtnode) when a lazy node is expanded for the first time.
- onCustomRender: null, // Callback(dtnode) before a node is rendered. Return a HTML string to override.
- onCreate: null, // Callback(dtnode, nodeSpan) after a node was rendered for the first time.
- onRender: null, // Callback(dtnode, nodeSpan) after a node was rendered.
- // postProcess is similar to the standard dataFilter hook,
- // but it is also called for JSONP
- postProcess: null, // Callback(data, dataType) before an Ajax result is passed to dynatree
-
- // Drag'n'drop support
- dnd: {
- // Make tree nodes draggable:
- onDragStart: null, // Callback(sourceNode), return true, to enable dnd
- onDragStop: null, // Callback(sourceNode)
-// helper: null,
- // Make tree nodes accept draggables
- autoExpandMS: 1000, // Expand nodes after n milliseconds of hovering.
- preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.
- onDragEnter: null, // Callback(targetNode, sourceNode)
- onDragOver: null, // Callback(targetNode, sourceNode, hitMode)
- onDrop: null, // Callback(targetNode, sourceNode, hitMode)
- onDragLeave: null // Callback(targetNode, sourceNode)
- },
- ajaxDefaults: { // Used by initAjax option
- cache: false, // false: Append random '_' argument to the request url to prevent caching.
- timeout: 0, // >0: Make sure we get an ajax error for invalid URLs
- dataType: "json" // Expect json format and pass json object to callbacks.
- },
- strings: {
- loading: "Loading&#8230;",
- loadError: "Load error!"
- },
- generateIds: false, // Generate id attributes like <span id='dynatree-id-KEY'>
- idPrefix: "dynatree-id-", // Used to generate node id's like <span id="dynatree-id-<key>">.
- keyPathSeparator: "/", // Used by node.getKeyPath() and tree.loadKeyPath().
-// cookieId: "dynatree-cookie", // Choose a more unique name, to allow multiple trees.
- cookieId: "dynatree", // Choose a more unique name, to allow multiple trees.
- cookie: {
- expires: null //7, // Days or Date; null: session cookie
-// path: "/", // Defaults to current page
-// domain: "jquery.com",
-// secure: true
- },
- // Class names used, when rendering the HTML markup.
- // Note: if only single entries are passed for options.classNames, all other
- // values are still set to default.
- classNames: {
- container: "dynatree-container",
- node: "dynatree-node",
- folder: "dynatree-folder",
-// document: "dynatree-document",
-
- empty: "dynatree-empty",
- vline: "dynatree-vline",
- expander: "dynatree-expander",
- connector: "dynatree-connector",
- checkbox: "dynatree-checkbox",
- nodeIcon: "dynatree-icon",
- title: "dynatree-title",
- noConnector: "dynatree-no-connector",
-
- nodeError: "dynatree-statusnode-error",
- nodeWait: "dynatree-statusnode-wait",
- hidden: "dynatree-hidden",
- combinedExpanderPrefix: "dynatree-exp-",
- combinedIconPrefix: "dynatree-ico-",
- nodeLoading: "dynatree-loading",
-// disabled: "dynatree-disabled",
- hasChildren: "dynatree-has-children",
- active: "dynatree-active",
- selected: "dynatree-selected",
- expanded: "dynatree-expanded",
- lazy: "dynatree-lazy",
- focused: "dynatree-focused",
- partsel: "dynatree-partsel",
- lastsib: "dynatree-lastsib"
- },
- debugLevel: 1,
-
- // ------------------------------------------------------------------------
- lastentry: undefined
-};
-//
-if(versionCompare($.ui.version, "1.8") < 0){
-//if( parseFloat($.ui.version) < 1.8 ) {
- $.ui.dynatree.defaults = $.ui.dynatree.prototype.options;
-}
-
-/*******************************************************************************
- * Reserved data attributes for a tree node.
- */
-$.ui.dynatree.nodedatadefaults = {
- title: null, // (required) Displayed name of the node (html is allowed here)
- key: null, // May be used with activate(), select(), find(), ...
- isFolder: false, // Use a folder icon. Also the node is expandable but not selectable.
- isLazy: false, // Call onLazyRead(), when the node is expanded for the first time to allow for delayed creation of children.
- tooltip: null, // Show this popup text.
- href: null, // Added to the generated <a> tag.
- icon: null, // Use a custom image (filename relative to tree.options.imagePath). 'null' for default icon, 'false' for no icon.
- addClass: null, // Class name added to the node's span tag.
- noLink: false, // Use <span> instead of <a> tag for this node
- activate: false, // Initial active status.
- focus: false, // Initial focused status.
- expand: false, // Initial expanded status.
- select: false, // Initial selected status.
- hideCheckbox: false, // Suppress checkbox display for this node.
- unselectable: false, // Prevent selection.
-// disabled: false,
- // The following attributes are only valid if passed to some functions:
- children: null, // Array of child nodes.
- // NOTE: we can also add custom attributes here.
- // This may then also be used in the onActivate(), onSelect() or onLazyTree() callbacks.
- // ------------------------------------------------------------------------
- lastentry: undefined
-};
-
-/*******************************************************************************
- * Drag and drop support
- */
-function _initDragAndDrop(tree) {
- var dnd = tree.options.dnd || null;
- // Register 'connectToDynatree' option with ui.draggable
- if(dnd && (dnd.onDragStart || dnd.onDrop)) {
- _registerDnd();
- }
- // Attach ui.draggable to this Dynatree instance
- if(dnd && dnd.onDragStart ) {
- tree.$tree.draggable({
- addClasses: false,
- appendTo: "body",
- containment: false,
- delay: 0,
- distance: 4,
- revert: false,
- scroll: true, // issue 244: enable scrolling (if ul.dynatree-container)
- scrollSpeed: 7,
- scrollSensitivity: 10,
- // Delegate draggable.start, drag, and stop events to our handler
- connectToDynatree: true,
- // Let source tree create the helper element
- helper: function(event) {
- var sourceNode = $.ui.dynatree.getNode(event.target);
- if(!sourceNode){ // issue 211
- return "<div></div>";
- }
- return sourceNode.tree._onDragEvent("helper", sourceNode, null, event, null, null);
- },
- start: function(event, ui) {
- // See issues 211, 268, 278
-// var sourceNode = $.ui.dynatree.getNode(event.target);
- var sourceNode = ui.helper.data("dtSourceNode");
- return !!sourceNode; // Abort dragging if no Node could be found
- },
- _last: null
- });
- }
- // Attach ui.droppable to this Dynatree instance
- if(dnd && dnd.onDrop) {
- tree.$tree.droppable({
- addClasses: false,
- tolerance: "intersect",
- greedy: false,
- _last: null
- });
- }
-}
-
-//--- Extend ui.draggable event handling --------------------------------------
-var didRegisterDnd = false;
-var _registerDnd = function() {
- if(didRegisterDnd){
- return;
- }
- // Register proxy-functions for draggable.start/drag/stop
- $.ui.plugin.add("draggable", "connectToDynatree", {
- start: function(event, ui) {
- // issue 386
- var draggable = $(this).data("ui-draggable") || $(this).data("draggable"),
- sourceNode = ui.helper.data("dtSourceNode") || null;
-// logMsg("draggable-connectToDynatree.start, %s", sourceNode);
-// logMsg(" this: %o", this);
-// logMsg(" event: %o", event);
-// logMsg(" draggable: %o", draggable);
-// logMsg(" ui: %o", ui);
-
- if(sourceNode) {
- // Adjust helper offset, so cursor is slightly outside top/left corner
-// draggable.offset.click.top -= event.target.offsetTop;
-// draggable.offset.click.left -= event.target.offsetLeft;
- draggable.offset.click.top = -2;
- draggable.offset.click.left = + 16;
-// logMsg(" draggable2: %o", draggable);
-// logMsg(" draggable.offset.click FIXED: %s/%s", draggable.offset.click.left, draggable.offset.click.top);
- // Trigger onDragStart event
- // TODO: when called as connectTo..., the return value is ignored(?)
- return sourceNode.tree._onDragEvent("start", sourceNode, null, event, ui, draggable);
- }
- },
- drag: function(event, ui) {
- // issue 386
- var draggable = $(this).data("ui-draggable") || $(this).data("draggable"),
- sourceNode = ui.helper.data("dtSourceNode") || null,
- prevTargetNode = ui.helper.data("dtTargetNode") || null,
- targetNode = $.ui.dynatree.getNode(event.target);
-// logMsg("$.ui.dynatree.getNode(%o): %s", event.target, targetNode);
-// logMsg("connectToDynatree.drag: helper: %o", ui.helper[0]);
- if(event.target && !targetNode){
- // We got a drag event, but the targetNode could not be found
- // at the event location. This may happen,
- // 1. if the mouse jumped over the drag helper,
- // 2. or if non-dynatree element is dragged
- // We ignore it:
- var isHelper = $(event.target).closest("div.dynatree-drag-helper,#dynatree-drop-marker").length > 0;
- if(isHelper){
-// logMsg("Drag event over helper: ignored.");
- return;
- }
- }
-// logMsg("draggable-connectToDynatree.drag: targetNode(from event): %s, dtTargetNode: %s", targetNode, ui.helper.data("dtTargetNode"));
- ui.helper.data("dtTargetNode", targetNode);
- // Leaving a tree node
- if(prevTargetNode && prevTargetNode !== targetNode ) {
- prevTargetNode.tree._onDragEvent("leave", prevTargetNode, sourceNode, event, ui, draggable);
- }
- if(targetNode){
- if(!targetNode.tree.options.dnd.onDrop) {
- // not enabled as drop target
-// noop(); // Keep JSLint happy
- } else if(targetNode === prevTargetNode) {
- // Moving over same node
- targetNode.tree._onDragEvent("over", targetNode, sourceNode, event, ui, draggable);
- }else{
- // Entering this node first time
- targetNode.tree._onDragEvent("enter", targetNode, sourceNode, event, ui, draggable);
- }
- }
- // else go ahead with standard event handling
- },
- stop: function(event, ui) {
- // issue 386
- var draggable = $(this).data("ui-draggable") || $(this).data("draggable"),
- sourceNode = ui.helper.data("dtSourceNode") || null,
- targetNode = ui.helper.data("dtTargetNode") || null,
- mouseDownEvent = draggable._mouseDownEvent,
- eventType = event.type,
- dropped = (eventType == "mouseup" && event.which == 1);
- logMsg("draggable-connectToDynatree.stop: targetNode(from event): %s, dtTargetNode: %s", targetNode, ui.helper.data("dtTargetNode"));
-// logMsg("draggable-connectToDynatree.stop, %s", sourceNode);
-// logMsg(" type: %o, downEvent: %o, upEvent: %o", eventType, mouseDownEvent, event);
-// logMsg(" targetNode: %o", targetNode);
- if(!dropped){
- logMsg("Drag was cancelled");
- }
- if(targetNode) {
- if(dropped){
- targetNode.tree._onDragEvent("drop", targetNode, sourceNode, event, ui, draggable);
- }
- targetNode.tree._onDragEvent("leave", targetNode, sourceNode, event, ui, draggable);
- }
- if(sourceNode){
- sourceNode.tree._onDragEvent("stop", sourceNode, null, event, ui, draggable);
- }
- }
- });
- didRegisterDnd = true;
-};
-
-// ---------------------------------------------------------------------------
-}(jQuery));
diff --git a/SemanticForms/libs/jquery.fancybox.js b/SemanticForms/libs/jquery.fancybox.js
deleted file mode 100644
index 68d28659..00000000
--- a/SemanticForms/libs/jquery.fancybox.js
+++ /dev/null
@@ -1,1152 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-;(function($) {
- var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
-
- selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
-
- ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
-
- loadingTimer, loadingFrame = 1,
-
- titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
-
- isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
-
- /*
- * Private methods
- */
-
- _abort = function() {
- loading.hide();
-
- imgPreloader.onerror = imgPreloader.onload = null;
-
- if (ajaxLoader) {
- ajaxLoader.abort();
- }
-
- tmp.empty();
- },
-
- _error = function() {
- if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
- loading.hide();
- busy = false;
- return;
- }
-
- selectedOpts.titleShow = false;
-
- selectedOpts.width = 'auto';
- selectedOpts.height = 'auto';
-
- tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' );
-
- _process_inline();
- },
-
- _start = function() {
- var obj = selectedArray[ selectedIndex ],
- href,
- type,
- title,
- str,
- emb,
- ret;
-
- _abort();
-
- selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
-
- ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts);
-
- if (ret === false) {
- busy = false;
- return;
- } else if (typeof ret == 'object') {
- selectedOpts = $.extend(selectedOpts, ret);
- }
-
- title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || '';
-
- if (obj.nodeName && !selectedOpts.orig) {
- selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
- }
-
- if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) {
- title = selectedOpts.orig.attr('alt');
- }
-
- href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null;
-
- if ((/^(?:javascript)/i).test(href) || href == '#') {
- href = null;
- }
-
- if (selectedOpts.type) {
- type = selectedOpts.type;
-
- if (!href) {
- href = selectedOpts.content;
- }
-
- } else if (selectedOpts.content) {
- type = 'html';
-
- } else if (href) {
- if (href.match(imgRegExp)) {
- type = 'image';
-
- } else if (href.match(swfRegExp)) {
- type = 'swf';
-
- } else if ($(obj).hasClass("iframe")) {
- type = 'iframe';
-
- } else if (href.indexOf("#") === 0) {
- type = 'inline';
-
- } else {
- type = 'ajax';
- }
- }
-
- if (!type) {
- _error();
- return;
- }
-
- if (type == 'inline') {
- obj = href.substr(href.indexOf("#"));
- type = $(obj).length > 0 ? 'inline' : 'ajax';
- }
-
- selectedOpts.type = type;
- selectedOpts.href = href;
- selectedOpts.title = title;
-
- if (selectedOpts.autoDimensions) {
- if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') {
- selectedOpts.width = 'auto';
- selectedOpts.height = 'auto';
- } else {
- selectedOpts.autoDimensions = false;
- }
- }
-
- if (selectedOpts.modal) {
- selectedOpts.overlayShow = true;
- selectedOpts.hideOnOverlayClick = false;
- selectedOpts.hideOnContentClick = false;
- selectedOpts.enableEscapeButton = false;
- selectedOpts.showCloseButton = false;
- }
-
- selectedOpts.padding = parseInt(selectedOpts.padding, 10);
- selectedOpts.margin = parseInt(selectedOpts.margin, 10);
-
- tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
-
- $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
- $(this).replaceWith(content.children());
- });
-
- switch (type) {
- case 'html' :
- tmp.html( selectedOpts.content );
- _process_inline();
- break;
-
- case 'inline' :
- if ( $(obj).parent().is('#fancybox-content') === true) {
- busy = false;
- return;
- }
-
- $('<div class="fancybox-inline-tmp" />')
- .hide()
- .insertBefore( $(obj) )
- .bind('fancybox-cleanup', function() {
- $(this).replaceWith(content.children());
- }).bind('fancybox-cancel', function() {
- $(this).replaceWith(tmp.children());
- });
-
- $(obj).appendTo(tmp);
-
- _process_inline();
- break;
-
- case 'image':
- busy = false;
-
- $.fancybox.showActivity();
-
- imgPreloader = new Image();
-
- imgPreloader.onerror = function() {
- _error();
- };
-
- imgPreloader.onload = function() {
- busy = true;
-
- imgPreloader.onerror = imgPreloader.onload = null;
-
- _process_image();
- };
-
- imgPreloader.src = href;
- break;
-
- case 'swf':
- selectedOpts.scrolling = 'no';
-
- str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
- emb = '';
-
- $.each(selectedOpts.swf, function(name, val) {
- str += '<param name="' + name + '" value="' + val + '"></param>';
- emb += ' ' + name + '="' + val + '"';
- });
-
- str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';
-
- tmp.html(str);
-
- _process_inline();
- break;
-
- case 'ajax':
- busy = false;
-
- $.fancybox.showActivity();
-
- selectedOpts.ajax.win = selectedOpts.ajax.success;
-
- ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, {
- url : href,
- data : selectedOpts.ajax.data || {},
- error : function(XMLHttpRequest, textStatus, errorThrown) {
- if ( XMLHttpRequest.status > 0 ) {
- _error();
- }
- },
- success : function(data, textStatus, XMLHttpRequest) {
- var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader;
- if (o.status == 200) {
- if ( typeof selectedOpts.ajax.win == 'function' ) {
- ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest);
-
- if (ret === false) {
- loading.hide();
- return;
- } else if (typeof ret == 'string' || typeof ret == 'object') {
- data = ret;
- }
- }
-
- tmp.html( data );
- _process_inline();
- }
- }
- }));
-
- break;
-
- case 'iframe':
- _show();
- break;
- }
- },
-
- _process_inline = function() {
- var
- w = selectedOpts.width,
- h = selectedOpts.height;
-
- if (w.toString().indexOf('%') > -1) {
- w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px';
-
- } else {
- w = w == 'auto' ? 'auto' : w + 'px';
- }
-
- if (h.toString().indexOf('%') > -1) {
- h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px';
-
- } else {
- h = h == 'auto' ? 'auto' : h + 'px';
- }
-
- tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>');
-
- selectedOpts.width = tmp.width();
- selectedOpts.height = tmp.height();
-
- _show();
- },
-
- _process_image = function() {
- selectedOpts.width = imgPreloader.width;
- selectedOpts.height = imgPreloader.height;
-
- $("<img />").attr({
- 'id' : 'fancybox-img',
- 'src' : imgPreloader.src,
- 'alt' : selectedOpts.title
- }).appendTo( tmp );
-
- _show();
- },
-
- _show = function() {
- var pos, equal;
-
- loading.hide();
-
- if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
- $.event.trigger('fancybox-cancel');
-
- busy = false;
- return;
- }
-
- busy = true;
-
- $(content.add( overlay )).unbind();
-
- $(window).unbind("resize.fb scroll.fb");
- $(document).unbind('keydown.fb');
-
- if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
- wrap.css('height', wrap.height());
- }
-
- currentArray = selectedArray;
- currentIndex = selectedIndex;
- currentOpts = selectedOpts;
-
- if (currentOpts.overlayShow) {
- overlay.css({
- 'background-color' : currentOpts.overlayColor,
- 'opacity' : currentOpts.overlayOpacity,
- 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto',
- 'height' : $(document).height()
- });
-
- if (!overlay.is(':visible')) {
- if (isIE6) {
- $('select:not(#fancybox-tmp select)').filter(function() {
- return this.style.visibility !== 'hidden';
- }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() {
- this.style.visibility = 'inherit';
- });
- }
-
- overlay.show();
- }
- } else {
- overlay.hide();
- }
-
- final_pos = _get_zoom_to();
-
- _process_title();
-
- if (wrap.is(":visible")) {
- $( close.add( nav_left ).add( nav_right ) ).hide();
-
- pos = wrap.position();
-
- start_pos = {
- top : pos.top,
- left : pos.left,
- width : wrap.width(),
- height : wrap.height()
- };
-
- equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);
-
- content.fadeTo(currentOpts.changeFade, 0.3, function() {
- var finish_resizing = function() {
- content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
- };
-
- $.event.trigger('fancybox-change');
-
- content
- .empty()
- .removeAttr('filter')
- .css({
- 'border-width' : currentOpts.padding,
- 'width' : final_pos.width - currentOpts.padding * 2,
- 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
- });
-
- if (equal) {
- finish_resizing();
-
- } else {
- fx.prop = 0;
-
- $(fx).animate({prop: 1}, {
- duration : currentOpts.changeSpeed,
- easing : currentOpts.easingChange,
- step : _draw,
- complete : finish_resizing
- });
- }
- });
-
- return;
- }
-
- wrap.removeAttr("style");
-
- content.css('border-width', currentOpts.padding);
-
- if (currentOpts.transitionIn == 'elastic') {
- start_pos = _get_zoom_from();
-
- content.html( tmp.contents() );
-
- wrap.show();
-
- if (currentOpts.opacity) {
- final_pos.opacity = 0;
- }
-
- fx.prop = 0;
-
- $(fx).animate({prop: 1}, {
- duration : currentOpts.speedIn,
- easing : currentOpts.easingIn,
- step : _draw,
- complete : _finish
- });
-
- return;
- }
-
- if (currentOpts.titlePosition == 'inside' && titleHeight > 0) {
- title.show();
- }
-
- content
- .css({
- 'width' : final_pos.width - currentOpts.padding * 2,
- 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
- })
- .html( tmp.contents() );
-
- wrap
- .css(final_pos)
- .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
- },
-
- _format_title = function(title) {
- if (title && title.length) {
- if (currentOpts.titlePosition == 'float') {
- return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>';
- }
-
- return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>';
- }
-
- return false;
- },
-
- _process_title = function() {
- titleStr = currentOpts.title || '';
- titleHeight = 0;
-
- title
- .empty()
- .removeAttr('style')
- .removeClass();
-
- if (currentOpts.titleShow === false) {
- title.hide();
- return;
- }
-
- titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
-
- if (!titleStr || titleStr === '') {
- title.hide();
- return;
- }
-
- title
- .addClass('fancybox-title-' + currentOpts.titlePosition)
- .html( titleStr )
- .appendTo( 'body' )
- .show();
-
- switch (currentOpts.titlePosition) {
- case 'inside':
- title
- .css({
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'marginLeft' : currentOpts.padding,
- 'marginRight' : currentOpts.padding
- });
-
- titleHeight = title.outerHeight(true);
-
- title.appendTo( outer );
-
- final_pos.height += titleHeight;
- break;
-
- case 'over':
- title
- .css({
- 'marginLeft' : currentOpts.padding,
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'bottom' : currentOpts.padding
- })
- .appendTo( outer );
- break;
-
- case 'float':
- title
- .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1)
- .appendTo( wrap );
- break;
-
- default:
- title
- .css({
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'paddingLeft' : currentOpts.padding,
- 'paddingRight' : currentOpts.padding
- })
- .appendTo( wrap );
- break;
- }
-
- title.hide();
- },
-
- _set_navigation = function() {
- if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
- $(document).bind('keydown.fb', function(e) {
- if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
- e.preventDefault();
- $.fancybox.close();
-
- } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') {
- e.preventDefault();
- $.fancybox[ e.keyCode == 37 ? 'prev' : 'next']();
- }
- });
- }
-
- if (!currentOpts.showNavArrows) {
- nav_left.hide();
- nav_right.hide();
- return;
- }
-
- if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
- nav_left.show();
- }
-
- if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
- nav_right.show();
- }
- },
-
- _finish = function () {
- if (!$.support.opacity) {
- content.get(0).style.removeAttribute('filter');
- wrap.get(0).style.removeAttribute('filter');
- }
-
- if (selectedOpts.autoDimensions) {
- content.css('height', 'auto');
- }
-
- wrap.css('height', 'auto');
-
- if (titleStr && titleStr.length) {
- title.show();
- }
-
- if (currentOpts.showCloseButton) {
- close.show();
- }
-
- _set_navigation();
-
- if (currentOpts.hideOnContentClick) {
- content.bind('click', $.fancybox.close);
- }
-
- if (currentOpts.hideOnOverlayClick) {
- overlay.bind('click', $.fancybox.close);
- }
-
- $(window).bind("resize.fb", $.fancybox.resize);
-
- if (currentOpts.centerOnScroll) {
- $(window).bind("scroll.fb", $.fancybox.center);
- }
-
- if (currentOpts.type == 'iframe') {
- $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
- }
-
- wrap.show();
-
- busy = false;
-
- $.fancybox.center();
-
- currentOpts.onComplete(currentArray, currentIndex, currentOpts);
-
- _preload_images();
- },
-
- _preload_images = function() {
- var href,
- objNext;
-
- if ((currentArray.length -1) > currentIndex) {
- href = currentArray[ currentIndex + 1 ].href;
-
- if (typeof href !== 'undefined' && href.match(imgRegExp)) {
- objNext = new Image();
- objNext.src = href;
- }
- }
-
- if (currentIndex > 0) {
- href = currentArray[ currentIndex - 1 ].href;
-
- if (typeof href !== 'undefined' && href.match(imgRegExp)) {
- objNext = new Image();
- objNext.src = href;
- }
- }
- },
-
- _draw = function(pos) {
- var dim = {
- width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
- height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
-
- top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10),
- left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10)
- };
-
- if (typeof final_pos.opacity !== 'undefined') {
- dim.opacity = pos < 0.5 ? 0.5 : pos;
- }
-
- wrap.css(dim);
-
- content.css({
- 'width' : dim.width - currentOpts.padding * 2,
- 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2
- });
- },
-
- _get_viewport = function() {
- return [
- $(window).width() - (currentOpts.margin * 2),
- $(window).height() - (currentOpts.margin * 2),
- $(document).scrollLeft() + currentOpts.margin,
- $(document).scrollTop() + currentOpts.margin
- ];
- },
-
- _get_zoom_to = function () {
- var view = _get_viewport(),
- to = {},
- resize = currentOpts.autoScale,
- double_padding = currentOpts.padding * 2,
- ratio;
-
- if (currentOpts.width.toString().indexOf('%') > -1) {
- to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10);
- } else {
- to.width = currentOpts.width + double_padding;
- }
-
- if (currentOpts.height.toString().indexOf('%') > -1) {
- to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10);
- } else {
- to.height = currentOpts.height + double_padding;
- }
-
- if (resize && (to.width > view[0] || to.height > view[1])) {
- if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
- ratio = (currentOpts.width ) / (currentOpts.height );
-
- if ((to.width ) > view[0]) {
- to.width = view[0];
- to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10);
- }
-
- if ((to.height) > view[1]) {
- to.height = view[1];
- to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10);
- }
-
- } else {
- to.width = Math.min(to.width, view[0]);
- to.height = Math.min(to.height, view[1]);
- }
- }
-
- to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10);
- to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10);
-
- return to;
- },
-
- _get_obj_pos = function(obj) {
- var pos = obj.offset();
-
- pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0;
- pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0;
-
- pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0;
- pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0;
-
- pos.width = obj.width();
- pos.height = obj.height();
-
- return pos;
- },
-
- _get_zoom_from = function() {
- var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
- from = {},
- pos,
- view;
-
- if (orig && orig.length) {
- pos = _get_obj_pos(orig);
-
- from = {
- width : pos.width + (currentOpts.padding * 2),
- height : pos.height + (currentOpts.padding * 2),
- top : pos.top - currentOpts.padding - 20,
- left : pos.left - currentOpts.padding - 20
- };
-
- } else {
- view = _get_viewport();
-
- from = {
- width : currentOpts.padding * 2,
- height : currentOpts.padding * 2,
- top : parseInt(view[3] + view[1] * 0.5, 10),
- left : parseInt(view[2] + view[0] * 0.5, 10)
- };
- }
-
- return from;
- },
-
- _animate_loading = function() {
- if (!loading.is(':visible')){
- clearInterval(loadingTimer);
- return;
- }
-
- $('div', loading).css('top', (loadingFrame * -40) + 'px');
-
- loadingFrame = (loadingFrame + 1) % 12;
- };
-
- /**
- * Public methods
- */
-
- $.fn.fancybox = function(options) {
- if (!$(this).length) {
- return this;
- }
-
- $(this)
- .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
- .unbind('click.fb')
- .bind('click.fb', function(e) {
- e.preventDefault();
-
- if (busy) {
- return;
- }
-
- busy = true;
-
- $(this).blur();
-
- selectedArray = [];
- selectedIndex = 0;
-
- var rel = $(this).attr('rel') || '';
-
- if (!rel || rel === '' || rel === 'nofollow') {
- selectedArray.push(this);
-
- } else {
- selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
- selectedIndex = selectedArray.index( this );
- }
-
- _start();
- });
-
- return this;
- };
-
- $.fancybox = function(obj) {
- var opts;
-
- if (busy) {
- return;
- }
-
- busy = true;
- opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};
-
- selectedArray = [];
- selectedIndex = parseInt(opts.index, 10) || 0;
-
- if ($.isArray(obj)) {
- for (var i = 0, j = obj.length; i < j; i++) {
- if (typeof obj[i] == 'object') {
- $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
- } else {
- obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
- }
- }
-
- selectedArray = jQuery.merge(selectedArray, obj);
-
- } else {
- if (typeof obj == 'object') {
- $(obj).data('fancybox', $.extend({}, opts, obj));
- } else {
- obj = $({}).data('fancybox', $.extend({content : obj}, opts));
- }
-
- selectedArray.push(obj);
- }
-
- if (selectedIndex > selectedArray.length || selectedIndex < 0) {
- selectedIndex = 0;
- }
-
- _start();
- };
-
- $.fancybox.showActivity = function() {
- clearInterval(loadingTimer);
-
- loading.show();
- loadingTimer = setInterval(_animate_loading, 66);
- };
-
- $.fancybox.hideActivity = function() {
- loading.hide();
- };
-
- $.fancybox.next = function() {
- return $.fancybox.pos( currentIndex + 1);
- };
-
- $.fancybox.prev = function() {
- return $.fancybox.pos( currentIndex - 1);
- };
-
- $.fancybox.pos = function(pos) {
- if (busy) {
- return;
- }
-
- pos = parseInt(pos);
-
- selectedArray = currentArray;
-
- if (pos > -1 && pos < currentArray.length) {
- selectedIndex = pos;
- _start();
-
- } else if (currentOpts.cyclic && currentArray.length > 1) {
- selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1;
- _start();
- }
- };
-
- $.fancybox.cancel = function() {
- if (busy) {
- return;
- }
-
- busy = true;
-
- $.event.trigger('fancybox-cancel');
-
- _abort();
-
- selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);
-
- busy = false;
- };
-
- // Note: within an iframe use - parent.$.fancybox.close();
- $.fancybox.close = function() {
- if (busy || wrap.is(':hidden')) {
- return;
- }
-
- busy = true;
-
- if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
- busy = false;
- return;
- }
-
- _abort();
-
- $(close.add( nav_left ).add( nav_right )).hide();
-
- $(content.add( overlay )).unbind();
-
- $(window).unbind("resize.fb scroll.fb");
- $(document).unbind('keydown.fb');
-
- content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
-
- if (currentOpts.titlePosition !== 'inside') {
- title.empty();
- }
-
- wrap.stop();
-
- function _cleanup() {
- overlay.fadeOut('fast');
-
- title.empty().hide();
- wrap.hide();
-
- $.event.trigger('fancybox-cleanup');
-
- content.empty();
-
- currentOpts.onClosed(currentArray, currentIndex, currentOpts);
-
- currentArray = selectedOpts = [];
- currentIndex = selectedIndex = 0;
- currentOpts = selectedOpts = {};
-
- busy = false;
- }
-
- if (currentOpts.transitionOut == 'elastic') {
- start_pos = _get_zoom_from();
-
- var pos = wrap.position();
-
- final_pos = {
- top : pos.top ,
- left : pos.left,
- width : wrap.width(),
- height : wrap.height()
- };
-
- if (currentOpts.opacity) {
- final_pos.opacity = 1;
- }
-
- title.empty().hide();
-
- fx.prop = 1;
-
- $(fx).animate({ prop: 0 }, {
- duration : currentOpts.speedOut,
- easing : currentOpts.easingOut,
- step : _draw,
- complete : _cleanup
- });
-
- } else {
- wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
- }
- };
-
- $.fancybox.resize = function() {
- if (overlay.is(':visible')) {
- overlay.css('height', $(document).height());
- }
-
- $.fancybox.center(true);
- };
-
- $.fancybox.center = function() {
- var view, align;
-
- if (busy) {
- return;
- }
-
- align = arguments[0] === true ? 1 : 0;
- view = _get_viewport();
-
- if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) {
- return;
- }
-
- wrap
- .stop()
- .animate({
- 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),
- 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding))
- }, typeof arguments[0] == 'number' ? arguments[0] : 200);
- };
-
- $.fancybox.init = function() {
- if ($("#fancybox-wrap").length) {
- return;
- }
-
- $('body').append(
- tmp = $('<div id="fancybox-tmp"></div>'),
- loading = $('<div id="fancybox-loading"><div></div></div>'),
- overlay = $('<div id="fancybox-overlay"></div>'),
- wrap = $('<div id="fancybox-wrap"></div>')
- );
-
- outer = $('<div id="fancybox-outer"></div>')
- .append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
- .appendTo( wrap );
-
- outer.append(
- content = $('<div id="fancybox-content"></div>'),
- close = $('<a id="fancybox-close"></a>'),
- title = $('<div id="fancybox-title"></div>'),
-
- nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
- nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
- );
-
- close.click($.fancybox.close);
- loading.click($.fancybox.cancel);
-
- nav_left.click(function(e) {
- e.preventDefault();
- $.fancybox.prev();
- });
-
- nav_right.click(function(e) {
- e.preventDefault();
- $.fancybox.next();
- });
-
- if ($.fn.mousewheel) {
- wrap.bind('mousewheel.fb', function(e, delta) {
- if (busy) {
- e.preventDefault();
-
- } else if ($(e.target).get(0).clientHeight === 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) {
- e.preventDefault();
- $.fancybox[ delta > 0 ? 'prev' : 'next']();
- }
- });
- }
-
- if (!$.support.opacity) {
- wrap.addClass('fancybox-ie');
- }
-
- if (isIE6) {
- loading.addClass('fancybox-ie6');
- wrap.addClass('fancybox-ie6');
-
- $('<iframe id="fancybox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank' ) + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(outer);
- }
- };
-
- $.fn.fancybox.defaults = {
- padding : 10,
- margin : 40,
- opacity : false,
- modal : false,
- cyclic : false,
- scrolling : 'auto', // 'auto', 'yes' or 'no'
-
- width : 560,
- height : 340,
-
- autoScale : true,
- autoDimensions : true,
- centerOnScroll : false,
-
- ajax : {},
- swf : { wmode: 'transparent' },
-
- hideOnOverlayClick : true,
- hideOnContentClick : false,
-
- overlayShow : true,
- overlayOpacity : 0.7,
- overlayColor : '#777',
-
- titleShow : true,
- titlePosition : 'float', // 'float', 'outside', 'inside' or 'over'
- titleFormat : null,
- titleFromAlt : false,
-
- transitionIn : 'fade', // 'elastic', 'fade' or 'none'
- transitionOut : 'fade', // 'elastic', 'fade' or 'none'
-
- speedIn : 300,
- speedOut : 300,
-
- changeSpeed : 300,
- changeFade : 'fast',
-
- easingIn : 'swing',
- easingOut : 'swing',
-
- showCloseButton : true,
- showNavArrows : true,
- enableEscapeButton : true,
- enableKeyboardNav : true,
-
- onStart : function(){},
- onCancel : function(){},
- onComplete : function(){},
- onCleanup : function(){},
- onClosed : function(){},
- onError : function(){}
- };
-
- $(document).ready(function() {
- $.fancybox.init();
- });
-
-})(jQuery);
diff --git a/SemanticForms/libs/select2.js b/SemanticForms/libs/select2.js
deleted file mode 100644
index fdd18a71..00000000
--- a/SemanticForms/libs/select2.js
+++ /dev/null
@@ -1,3378 +0,0 @@
-/*
-Copyright 2012 Igor Vaynberg
-
-Version: @@ver@@ Timestamp: @@timestamp@@
-
-This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
-General Public License version 2 (the "GPL License"). You may choose either license to govern your
-use of this software only upon the condition that you accept all of the terms of either the Apache
-License or the GPL License.
-
-You may obtain a copy of the Apache License and the GPL License at:
-
- http://www.apache.org/licenses/LICENSE-2.0
- http://www.gnu.org/licenses/gpl-2.0.html
-
-Unless required by applicable law or agreed to in writing, software distributed under the
-Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for
-the specific language governing permissions and limitations under the Apache License and the GPL License.
-*/
-(function ($) {
- if(typeof $.fn.each2 == "undefined") {
- $.extend($.fn, {
- /*
- * 4-10 times faster .each replacement
- * use it carefully, as it overrides jQuery context of element on each iteration
- */
- each2 : function (c) {
- var j = $([0]), i = -1, l = this.length;
- while (
- ++i < l
- && (j.context = j[0] = this[i])
- && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object
- );
- return this;
- }
- });
- }
-})(jQuery);
-
-(function ($, undefined) {
- "use strict";
- /*global document, window, jQuery, console */
-
- if (window.Select2 !== undefined) {
- return;
- }
-
- var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,
- lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,
-
- KEY = {
- TAB: 9,
- ENTER: 13,
- ESC: 27,
- SPACE: 32,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- PAGE_UP: 33,
- PAGE_DOWN: 34,
- HOME: 36,
- END: 35,
- BACKSPACE: 8,
- DELETE: 46,
- isArrow: function (k) {
- k = k.which ? k.which : k;
- switch (k) {
- case KEY.LEFT:
- case KEY.RIGHT:
- case KEY.UP:
- case KEY.DOWN:
- return true;
- }
- return false;
- },
- isControl: function (e) {
- var k = e.which;
- switch (k) {
- case KEY.SHIFT:
- case KEY.CTRL:
- case KEY.ALT:
- return true;
- }
-
- if (e.metaKey) return true;
-
- return false;
- },
- isFunctionKey: function (k) {
- k = k.which ? k.which : k;
- return k >= 112 && k <= 123;
- }
- },
- MEASURE_SCROLLBAR_TEMPLATE = "<div class='select2-measure-scrollbar'></div>",
-
- DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"};
-
- $document = $(document);
-
- nextUid=(function() { var counter=1; return function() { return counter++; }; }());
-
-
- function reinsertElement(element) {
- var placeholder = $(document.createTextNode(''));
-
- element.before(placeholder);
- placeholder.before(element);
- placeholder.remove();
- }
-
- function stripDiacritics(str) {
- var ret, i, l, c;
-
- if (!str || str.length < 1) return str;
-
- ret = "";
- for (i = 0, l = str.length; i < l; i++) {
- c = str.charAt(i);
- ret += DIACRITICS[c] || c;
- }
- return ret;
- }
-
- function indexOf(value, array) {
- var i = 0, l = array.length;
- for (; i < l; i = i + 1) {
- if (equal(value, array[i])) return i;
- }
- return -1;
- }
-
- function measureScrollbar () {
- var $template = $( MEASURE_SCROLLBAR_TEMPLATE );
- $template.appendTo('body');
-
- var dim = {
- width: $template.width() - $template[0].clientWidth,
- height: $template.height() - $template[0].clientHeight
- };
- $template.remove();
-
- return dim;
- }
-
- /**
- * Compares equality of a and b
- * @param a
- * @param b
- */
- function equal(a, b) {
- if (a === b) return true;
- if (a === undefined || b === undefined) return false;
- if (a === null || b === null) return false;
- // Check whether 'a' or 'b' is a string (primitive or object).
- // The concatenation of an empty string (+'') converts its argument to a string's primitive.
- if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object
- if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object
- return false;
- }
-
- /**
- * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty
- * strings
- * @param string
- * @param separator
- */
- function splitVal(string, separator) {
- var val, i, l;
- if (string === null || string.length < 1) return [];
- val = string.split(separator);
- for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);
- return val;
- }
-
- function getSideBorderPadding(element) {
- return element.outerWidth(false) - element.width();
- }
-
- function installKeyUpChangeEvent(element) {
- var key="keyup-change-value";
- element.on("keydown", function () {
- if ($.data(element, key) === undefined) {
- $.data(element, key, element.val());
- }
- });
- element.on("keyup", function () {
- var val= $.data(element, key);
- if (val !== undefined && element.val() !== val) {
- $.removeData(element, key);
- element.trigger("keyup-change");
- }
- });
- }
-
- $document.on("mousemove", function (e) {
- lastMousePosition.x = e.pageX;
- lastMousePosition.y = e.pageY;
- });
-
- /**
- * filters mouse events so an event is fired only if the mouse moved.
- *
- * filters out mouse events that occur when mouse is stationary but
- * the elements under the pointer are scrolled.
- */
- function installFilteredMouseMove(element) {
- element.on("mousemove", function (e) {
- var lastpos = lastMousePosition;
- if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
- $(e.target).trigger("mousemove-filtered", e);
- }
- });
- }
-
- /**
- * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made
- * within the last quietMillis milliseconds.
- *
- * @param quietMillis number of milliseconds to wait before invoking fn
- * @param fn function to be debounced
- * @param ctx object to be used as this reference within fn
- * @return debounced version of fn
- */
- function debounce(quietMillis, fn, ctx) {
- ctx = ctx || undefined;
- var timeout;
- return function () {
- var args = arguments;
- window.clearTimeout(timeout);
- timeout = window.setTimeout(function() {
- fn.apply(ctx, args);
- }, quietMillis);
- };
- }
-
- /**
- * A simple implementation of a thunk
- * @param formula function used to lazily initialize the thunk
- * @return {Function}
- */
- function thunk(formula) {
- var evaluated = false,
- value;
- return function() {
- if (evaluated === false) { value = formula(); evaluated = true; }
- return value;
- };
- };
-
- function installDebouncedScroll(threshold, element) {
- var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);});
- element.on("scroll", function (e) {
- if (indexOf(e.target, element.get()) >= 0) notify(e);
- });
- }
-
- function focus($el) {
- if ($el[0] === document.activeElement) return;
-
- /* set the focus in a 0 timeout - that way the focus is set after the processing
- of the current event has finished - which seems like the only reliable way
- to set focus */
- window.setTimeout(function() {
- var el=$el[0], pos=$el.val().length, range;
-
- $el.focus();
-
- /* make sure el received focus so we do not error out when trying to manipulate the caret.
- sometimes modals or others listeners may steal it after its set */
- var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);
- if (isVisible && el === document.activeElement) {
-
- /* after the focus is set move the caret to the end, necessary when we val()
- just before setting focus */
- if(el.setSelectionRange)
- {
- el.setSelectionRange(pos, pos);
- }
- else if (el.createTextRange) {
- range = el.createTextRange();
- range.collapse(false);
- range.select();
- }
- }
- }, 0);
- }
-
- function getCursorInfo(el) {
- el = $(el)[0];
- var offset = 0;
- var length = 0;
- if ('selectionStart' in el) {
- offset = el.selectionStart;
- length = el.selectionEnd - offset;
- } else if ('selection' in document) {
- el.focus();
- var sel = document.selection.createRange();
- length = document.selection.createRange().text.length;
- sel.moveStart('character', -el.value.length);
- offset = sel.text.length - length;
- }
- return { offset: offset, length: length };
- }
-
- function killEvent(event) {
- event.preventDefault();
- event.stopPropagation();
- }
- function killEventImmediately(event) {
- event.preventDefault();
- event.stopImmediatePropagation();
- }
-
- function measureTextWidth(e) {
- if (!sizer){
- var style = e[0].currentStyle || window.getComputedStyle(e[0], null);
- sizer = $(document.createElement("div")).css({
- position: "absolute",
- left: "-10000px",
- top: "-10000px",
- display: "none",
- fontSize: style.fontSize,
- fontFamily: style.fontFamily,
- fontStyle: style.fontStyle,
- fontWeight: style.fontWeight,
- letterSpacing: style.letterSpacing,
- textTransform: style.textTransform,
- whiteSpace: "nowrap"
- });
- sizer.attr("class","select2-sizer");
- $("body").append(sizer);
- }
- sizer.text(e.val());
- return sizer.width();
- }
-
- function syncCssClasses(dest, src, adapter) {
- var classes, replacements = [], adapted;
-
- classes = dest.attr("class");
- if (classes) {
- classes = '' + classes; // for IE which returns object
- $(classes.split(" ")).each2(function() {
- if (this.indexOf("select2-") === 0) {
- replacements.push(this);
- }
- });
- }
- classes = src.attr("class");
- if (classes) {
- classes = '' + classes; // for IE which returns object
- $(classes.split(" ")).each2(function() {
- if (this.indexOf("select2-") !== 0) {
- adapted = adapter(this);
- if (adapted) {
- replacements.push(adapted);
- }
- }
- });
- }
- dest.attr("class", replacements.join(" "));
- }
-
-
- function markMatch(text, term, markup, escapeMarkup) {
- var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),
- tl=term.length;
-
- if (match<0) {
- markup.push(escapeMarkup(text));
- return;
- }
-
- markup.push(escapeMarkup(text.substring(0, match)));
- markup.push("<span class='select2-match'>");
- markup.push(escapeMarkup(text.substring(match, match + tl)));
- markup.push("</span>");
- markup.push(escapeMarkup(text.substring(match + tl, text.length)));
- }
-
- function defaultEscapeMarkup(markup) {
- var replace_map = {
- '\\': '&#92;',
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&quot;',
- "'": '&#39;',
- "/": '&#47;'
- };
-
- return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
- return replace_map[match];
- });
- }
-
- /**
- * Produces an ajax-based query function
- *
- * @param options object containing configuration parameters
- * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax
- * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax
- * @param options.url url for the data
- * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.
- * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified
- * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often
- * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.
- * The expected format is an object containing the following keys:
- * results array of objects that will be used as choices
- * more (optional) boolean indicating whether there are more results available
- * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}
- */
- function ajax(options) {
- var timeout, // current scheduled but not yet executed request
- handler = null,
- quietMillis = options.quietMillis || 100,
- ajaxUrl = options.url,
- self = this;
-
- return function (query) {
- window.clearTimeout(timeout);
- timeout = window.setTimeout(function () {
- var data = options.data, // ajax data function
- url = ajaxUrl, // ajax url string or function
- transport = options.transport || $.fn.select2.ajaxDefaults.transport,
- // deprecated - to be removed in 4.0 - use params instead
- deprecated = {
- type: options.type || 'GET', // set type of request (GET or POST)
- cache: options.cache || false,
- jsonpCallback: options.jsonpCallback||undefined,
- dataType: options.dataType||"json"
- },
- params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);
-
- data = data ? data.call(self, query.term, query.page, query.context) : null;
- url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;
-
- if (handler && typeof handler.abort === "function") { handler.abort(); }
-
- if (options.params) {
- if ($.isFunction(options.params)) {
- $.extend(params, options.params.call(self));
- } else {
- $.extend(params, options.params);
- }
- }
-
- $.extend(params, {
- url: url,
- dataType: options.dataType,
- data: data,
- success: function (data) {
- // TODO - replace query.page with query so users have access to term, page, etc.
- var results = options.results(data, query.page);
- query.callback(results);
- }
- });
- handler = transport.call(self, params);
- }, quietMillis);
- };
- }
-
- /**
- * Produces a query function that works with a local array
- *
- * @param options object containing configuration parameters. The options parameter can either be an array or an
- * object.
- *
- * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.
- *
- * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain
- * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'
- * key can either be a String in which case it is expected that each element in the 'data' array has a key with the
- * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract
- * the text.
- */
- function local(options) {
- var data = options, // data elements
- dataText,
- tmp,
- text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
-
- if ($.isArray(data)) {
- tmp = data;
- data = { results: tmp };
- }
-
- if ($.isFunction(data) === false) {
- tmp = data;
- data = function() { return tmp; };
- }
-
- var dataItem = data();
- if (dataItem.text) {
- text = dataItem.text;
- // if text is not a function we assume it to be a key name
- if (!$.isFunction(text)) {
- dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available
- text = function (item) { return item[dataText]; };
- }
- }
-
- return function (query) {
- var t = query.term, filtered = { results: [] }, process;
- if (t === "") {
- query.callback(data());
- return;
- }
-
- process = function(datum, collection) {
- var group, attr;
- datum = datum[0];
- if (datum.children) {
- group = {};
- for (attr in datum) {
- if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];
- }
- group.children=[];
- $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });
- if (group.children.length || query.matcher(t, text(group), datum)) {
- collection.push(group);
- }
- } else {
- if (query.matcher(t, text(datum), datum)) {
- collection.push(datum);
- }
- }
- };
-
- $(data().results).each2(function(i, datum) { process(datum, filtered.results); });
- query.callback(filtered);
- };
- }
-
- // TODO javadoc
- function tags(data) {
- var isFunc = $.isFunction(data);
- return function (query) {
- var t = query.term, filtered = {results: []};
- $(isFunc ? data() : data).each(function () {
- var isObject = this.text !== undefined,
- text = isObject ? this.text : this;
- if (t === "" || query.matcher(t, text)) {
- filtered.results.push(isObject ? this : {id: this, text: this});
- }
- });
- query.callback(filtered);
- };
- }
-
- /**
- * Checks if the formatter function should be used.
- *
- * Throws an error if it is not a function. Returns true if it should be used,
- * false if no formatting should be performed.
- *
- * @param formatter
- */
- function checkFormatter(formatter, formatterName) {
- if ($.isFunction(formatter)) return true;
- if (!formatter) return false;
- if (typeof(formatter) === 'string') return true;
- throw new Error(formatterName +" must be a string, function, or falsy value");
- }
-
- function evaluate(val) {
- if ($.isFunction(val)) {
- var args = Array.prototype.slice.call(arguments, 1);
- return val.apply(null, args);
- }
- return val;
- }
-
- function countResults(results) {
- var count = 0;
- $.each(results, function(i, item) {
- if (item.children) {
- count += countResults(item.children);
- } else {
- count++;
- }
- });
- return count;
- }
-
- /**
- * Default tokenizer. This function uses breaks the input on substring match of any string from the
- * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those
- * two options have to be defined in order for the tokenizer to work.
- *
- * @param input text user has typed so far or pasted into the search field
- * @param selection currently selected choices
- * @param selectCallback function(choice) callback tho add the choice to selection
- * @param opts select2's opts
- * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value
- */
- function defaultTokenizer(input, selection, selectCallback, opts) {
- var original = input, // store the original so we can compare and know if we need to tell the search to update its text
- dupe = false, // check for whether a token we extracted represents a duplicate selected choice
- token, // token
- index, // position at which the separator was found
- i, l, // looping variables
- separator; // the matched separator
-
- if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;
-
- while (true) {
- index = -1;
-
- for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {
- separator = opts.tokenSeparators[i];
- index = input.indexOf(separator);
- if (index >= 0) break;
- }
-
- if (index < 0) break; // did not find any token separator in the input string, bail
-
- token = input.substring(0, index);
- input = input.substring(index + separator.length);
-
- if (token.length > 0) {
- token = opts.createSearchChoice.call(this, token, selection);
- if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {
- dupe = false;
- for (i = 0, l = selection.length; i < l; i++) {
- if (equal(opts.id(token), opts.id(selection[i]))) {
- dupe = true; break;
- }
- }
-
- if (!dupe) selectCallback(token);
- }
- }
- }
-
- if (original!==input) return input;
- }
-
- /**
- * Creates a new class
- *
- * @param superClass
- * @param methods
- */
- function clazz(SuperClass, methods) {
- var constructor = function () {};
- constructor.prototype = new SuperClass;
- constructor.prototype.constructor = constructor;
- constructor.prototype.parent = SuperClass.prototype;
- constructor.prototype = $.extend(constructor.prototype, methods);
- return constructor;
- }
-
- AbstractSelect2 = clazz(Object, {
-
- // abstract
- bind: function (func) {
- var self = this;
- return function () {
- func.apply(self, arguments);
- };
- },
-
- // abstract
- init: function (opts) {
- var results, search, resultsSelector = ".select2-results";
-
- // prepare options
- this.opts = opts = this.prepareOpts(opts);
-
- this.id=opts.id;
-
- // destroy if called on an existing component
- if (opts.element.data("select2") !== undefined &&
- opts.element.data("select2") !== null) {
- opts.element.data("select2").destroy();
- }
-
- this.container = this.createContainer();
-
- this.liveRegion = $("<span>", {
- role: "status",
- "aria-live": "polite"
- })
- .addClass("select2-hidden-accessible")
- .appendTo(document.body);
-
- this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid()).replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
- this.containerSelector="#"+this.containerId;
- this.container.attr("id", this.containerId);
-
- // cache the body so future lookups are cheap
- this.body = thunk(function() { return opts.element.closest("body"); });
-
- syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
-
- this.container.attr("style", opts.element.attr("style"));
- this.container.css(evaluate(opts.containerCss));
- this.container.addClass(evaluate(opts.containerCssClass));
-
- this.elementTabIndex = this.opts.element.attr("tabindex");
-
- // swap container for the element
- this.opts.element
- .data("select2", this)
- .attr("tabindex", "-1")
- .before(this.container)
- .on("click.select2", killEvent); // do not leak click events
-
- this.container.data("select2", this);
-
- this.dropdown = this.container.find(".select2-drop");
-
- syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
-
- this.dropdown.addClass(evaluate(opts.dropdownCssClass));
- this.dropdown.data("select2", this);
- this.dropdown.on("click", killEvent);
-
- this.results = results = this.container.find(resultsSelector);
- this.search = search = this.container.find("input.select2-input");
-
- this.queryCount = 0;
- this.resultsPage = 0;
- this.context = null;
-
- // initialize the container
- this.initContainer();
-
- this.container.on("click", killEvent);
-
- installFilteredMouseMove(this.results);
- this.dropdown.on("mousemove-filtered touchstart touchmove touchend", resultsSelector, this.bind(this.highlightUnderEvent));
-
- installDebouncedScroll(80, this.results);
- this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded));
-
- // do not propagate change event from the search field out of the component
- $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();});
- $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();});
-
- // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel
- if ($.fn.mousewheel) {
- results.mousewheel(function (e, delta, deltaX, deltaY) {
- var top = results.scrollTop();
- if (deltaY > 0 && top - deltaY <= 0) {
- results.scrollTop(0);
- killEvent(e);
- } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {
- results.scrollTop(results.get(0).scrollHeight - results.height());
- killEvent(e);
- }
- });
- }
-
- installKeyUpChangeEvent(search);
- search.on("keyup-change input paste", this.bind(this.updateResults));
- search.on("focus", function () { search.addClass("select2-focused"); });
- search.on("blur", function () { search.removeClass("select2-focused");});
-
- this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) {
- if ($(e.target).closest(".select2-result-selectable").length > 0) {
- this.highlightUnderEvent(e);
- this.selectHighlighted(e);
- }
- }));
-
- // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening
- // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's
- // dom it will trigger the popup close, which is not what we want
- this.dropdown.on("click mouseup mousedown", function (e) { e.stopPropagation(); });
-
- this.nextSearchTerm = undefined;
-
- if ($.isFunction(this.opts.initSelection)) {
- // initialize selection based on the current value of the source element
- this.initSelection();
-
- // if the user has provided a function that can set selection based on the value of the source element
- // we monitor the change event on the element and trigger it, allowing for two way synchronization
- this.monitorSource();
- }
-
- if (opts.maximumInputLength !== null) {
- this.search.attr("maxlength", opts.maximumInputLength);
- }
-
- var disabled = opts.element.prop("disabled");
- if (disabled === undefined) disabled = false;
- this.enable(!disabled);
-
- var readonly = opts.element.prop("readonly");
- if (readonly === undefined) readonly = false;
- this.readonly(readonly);
-
- // Calculate size of scrollbar
- scrollBarDimensions = scrollBarDimensions || measureScrollbar();
-
- this.autofocus = opts.element.prop("autofocus");
- opts.element.prop("autofocus", false);
- if (this.autofocus) this.focus();
-
- this.search.attr("placeholder", opts.searchInputPlaceholder);
- },
-
- // abstract
- destroy: function () {
- var element=this.opts.element, select2 = element.data("select2");
-
- this.close();
-
- if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
-
- if (select2 !== undefined) {
- select2.container.remove();
- select2.liveRegion.remove();
- select2.dropdown.remove();
- element
- .removeClass("select2-offscreen")
- .removeData("select2")
- .off(".select2")
- .prop("autofocus", this.autofocus || false);
- if (this.elementTabIndex) {
- element.attr({tabindex: this.elementTabIndex});
- } else {
- element.removeAttr("tabindex");
- }
- element.show();
- }
- },
-
- // abstract
- optionToData: function(element) {
- if (element.is("option")) {
- return {
- id:element.prop("value"),
- text:element.text(),
- element: element.get(),
- css: element.attr("class"),
- disabled: element.prop("disabled"),
- locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true)
- };
- } else if (element.is("optgroup")) {
- return {
- text:element.attr("label"),
- children:[],
- element: element.get(),
- css: element.attr("class")
- };
- }
- },
-
- // abstract
- prepareOpts: function (opts) {
- var element, select, idKey, ajaxUrl, self = this;
-
- element = opts.element;
-
- if (element.get(0).tagName.toLowerCase() === "select") {
- this.select = select = opts.element;
- }
-
- if (select) {
- // these options are not allowed when attached to a select because they are picked up off the element itself
- $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () {
- if (this in opts) {
- throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a <select> element.");
- }
- });
- }
-
- opts = $.extend({}, {
- populateResults: function(container, results, query) {
- var populate, id=this.opts.id, liveRegion=this.liveRegion;
-
- populate=function(results, container, depth) {
-
- var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;
-
- results = opts.sortResults(results, container, query);
-
- for (i = 0, l = results.length; i < l; i = i + 1) {
-
- result=results[i];
-
- disabled = (result.disabled === true);
- selectable = (!disabled) && (id(result) !== undefined);
-
- compound=result.children && result.children.length > 0;
-
- node=$("<li></li>");
- node.addClass("select2-results-dept-"+depth);
- node.addClass("select2-result");
- node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable");
- if (disabled) { node.addClass("select2-disabled"); }
- if (compound) { node.addClass("select2-result-with-children"); }
- node.addClass(self.opts.formatResultCssClass(result));
- node.attr("role", "presentation");
-
- label=$(document.createElement("div"));
- label.addClass("select2-result-label");
- label.attr("id", "select2-result-label-" + nextUid());
- label.attr("role", "option");
-
- formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);
- if (formatted!==undefined) {
- label.html(formatted);
- node.append(label);
- }
-
-
- if (compound) {
-
- innerContainer=$("<ul></ul>");
- innerContainer.addClass("select2-result-sub");
- populate(result.children, innerContainer, depth+1);
- node.append(innerContainer);
- }
-
- node.data("select2-data", result);
- container.append(node);
- }
-
- liveRegion.text(opts.formatMatches(results.length));
- };
-
- populate(results, container, 0);
- }
- }, $.fn.select2.defaults, opts);
-
- if (typeof(opts.id) !== "function") {
- idKey = opts.id;
- opts.id = function (e) { return e[idKey]; };
- }
-
- if ($.isArray(opts.element.data("select2Tags"))) {
- if ("tags" in opts) {
- throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id");
- }
- opts.tags=opts.element.data("select2Tags");
- }
-
- if (select) {
- opts.query = this.bind(function (query) {
- var data = { results: [], more: false },
- term = query.term,
- children, placeholderOption, process;
-
- process=function(element, collection) {
- var group;
- if (element.is("option")) {
- if (query.matcher(term, element.text(), element)) {
- collection.push(self.optionToData(element));
- }
- } else if (element.is("optgroup")) {
- group=self.optionToData(element);
- element.children().each2(function(i, elm) { process(elm, group.children); });
- if (group.children.length>0) {
- collection.push(group);
- }
- }
- };
-
- children=element.children();
-
- // ignore the placeholder option if there is one
- if (this.getPlaceholder() !== undefined && children.length > 0) {
- placeholderOption = this.getPlaceholderOption();
- if (placeholderOption) {
- children=children.not(placeholderOption);
- }
- }
-
- children.each2(function(i, elm) { process(elm, data.results); });
-
- query.callback(data);
- });
- // this is needed because inside val() we construct choices from options and there id is hardcoded
- opts.id=function(e) { return e.id; };
- } else {
- if (!("query" in opts)) {
-
- if ("ajax" in opts) {
- ajaxUrl = opts.element.data("ajax-url");
- if (ajaxUrl && ajaxUrl.length > 0) {
- opts.ajax.url = ajaxUrl;
- }
- opts.query = ajax.call(opts.element, opts.ajax);
- } else if ("data" in opts) {
- opts.query = local(opts.data);
- } else if ("tags" in opts) {
- opts.query = tags(opts.tags);
- if (opts.createSearchChoice === undefined) {
- opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };
- }
- if (opts.initSelection === undefined) {
- opts.initSelection = function (element, callback) {
- var data = [];
- $(splitVal(element.val(), opts.separator)).each(function () {
- var obj = { id: this, text: this },
- tags = opts.tags;
- if ($.isFunction(tags)) tags=tags();
- $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });
- data.push(obj);
- });
-
- callback(data);
- };
- }
- }
- }
- }
- if (typeof(opts.query) !== "function") {
- throw "query function not defined for Select2 " + opts.element.attr("id");
- }
-
- if (opts.createSearchChoicePosition === 'top') {
- opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };
- }
- else if (opts.createSearchChoicePosition === 'bottom') {
- opts.createSearchChoicePosition = function(list, item) { list.push(item); };
- }
- else if (typeof(opts.createSearchChoicePosition) !== "function") {
- throw "invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function";
- }
-
- return opts;
- },
-
- /**
- * Monitor the original element for changes and update select2 accordingly
- */
- // abstract
- monitorSource: function () {
- var el = this.opts.element, sync, observer;
-
- el.on("change.select2", this.bind(function (e) {
- if (this.opts.element.data("select2-change-triggered") !== true) {
- this.initSelection();
- }
- }));
-
- sync = this.bind(function () {
-
- // sync enabled state
- var disabled = el.prop("disabled");
- if (disabled === undefined) disabled = false;
- this.enable(!disabled);
-
- var readonly = el.prop("readonly");
- if (readonly === undefined) readonly = false;
- this.readonly(readonly);
-
- syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
- this.container.addClass(evaluate(this.opts.containerCssClass));
-
- syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
- this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));
-
- });
-
- // IE8-10
- el.on("propertychange.select2", sync);
-
- // hold onto a reference of the callback to work around a chromium bug
- if (this.mutationCallback === undefined) {
- this.mutationCallback = function (mutations) {
- mutations.forEach(sync);
- }
- }
-
- // safari, chrome, firefox, IE11
- observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;
- if (observer !== undefined) {
- if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
- this.propertyObserver = new observer(this.mutationCallback);
- this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });
- }
- },
-
- // abstract
- triggerSelect: function(data) {
- var evt = $.Event("select2-selecting", { val: this.id(data), object: data });
- this.opts.element.trigger(evt);
- return !evt.isDefaultPrevented();
- },
-
- /**
- * Triggers the change event on the source element
- */
- // abstract
- triggerChange: function (details) {
-
- details = details || {};
- details= $.extend({}, details, { type: "change", val: this.val() });
- // prevents recursive triggering
- this.opts.element.data("select2-change-triggered", true);
- this.opts.element.trigger(details);
- this.opts.element.data("select2-change-triggered", false);
-
- // some validation frameworks ignore the change event and listen instead to keyup, click for selects
- // so here we trigger the click event manually
- this.opts.element.click();
-
- // ValidationEngine ignores the change event and listens instead to blur
- // so here we trigger the blur event manually if so desired
- if (this.opts.blurOnChange)
- this.opts.element.blur();
- },
-
- //abstract
- isInterfaceEnabled: function()
- {
- return this.enabledInterface === true;
- },
-
- // abstract
- enableInterface: function() {
- var enabled = this._enabled && !this._readonly,
- disabled = !enabled;
-
- if (enabled === this.enabledInterface) return false;
-
- this.container.toggleClass("select2-container-disabled", disabled);
- this.close();
- this.enabledInterface = enabled;
-
- return true;
- },
-
- // abstract
- enable: function(enabled) {
- if (enabled === undefined) enabled = true;
- if (this._enabled === enabled) return;
- this._enabled = enabled;
-
- this.opts.element.prop("disabled", !enabled);
- this.enableInterface();
- },
-
- // abstract
- disable: function() {
- this.enable(false);
- },
-
- // abstract
- readonly: function(enabled) {
- if (enabled === undefined) enabled = false;
- if (this._readonly === enabled) return;
- this._readonly = enabled;
-
- this.opts.element.prop("readonly", enabled);
- this.enableInterface();
- },
-
- // abstract
- opened: function () {
- return this.container.hasClass("select2-dropdown-open");
- },
-
- // abstract
- positionDropdown: function() {
- var $dropdown = this.dropdown,
- offset = this.container.offset(),
- height = this.container.outerHeight(false),
- width = this.container.outerWidth(false),
- dropHeight = $dropdown.outerHeight(false),
- $window = $(window),
- windowWidth = $window.width(),
- windowHeight = $window.height(),
- viewPortRight = $window.scrollLeft() + windowWidth,
- viewportBottom = $window.scrollTop() + windowHeight,
- dropTop = offset.top + height,
- dropLeft = offset.left,
- enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
- enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),
- dropWidth = $dropdown.outerWidth(false),
- enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,
- aboveNow = $dropdown.hasClass("select2-drop-above"),
- bodyOffset,
- above,
- changeDirection,
- css,
- resultsListNode;
-
- // always prefer the current above/below alignment, unless there is not enough room
- if (aboveNow) {
- above = true;
- if (!enoughRoomAbove && enoughRoomBelow) {
- changeDirection = true;
- above = false;
- }
- } else {
- above = false;
- if (!enoughRoomBelow && enoughRoomAbove) {
- changeDirection = true;
- above = true;
- }
- }
-
- //if we are changing direction we need to get positions when dropdown is hidden;
- if (changeDirection) {
- $dropdown.hide();
- offset = this.container.offset();
- height = this.container.outerHeight(false);
- width = this.container.outerWidth(false);
- dropHeight = $dropdown.outerHeight(false);
- viewPortRight = $window.scrollLeft() + windowWidth;
- viewportBottom = $window.scrollTop() + windowHeight;
- dropTop = offset.top + height;
- dropLeft = offset.left;
- dropWidth = $dropdown.outerWidth(false);
- enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
- $dropdown.show();
- }
-
- if (this.opts.dropdownAutoWidth) {
- resultsListNode = $('.select2-results', $dropdown)[0];
- $dropdown.addClass('select2-drop-auto-width');
- $dropdown.css('width', '');
- // Add scrollbar width to dropdown if vertical scrollbar is present
- dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);
- dropWidth > width ? width = dropWidth : dropWidth = width;
- enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
- }
- else {
- this.container.removeClass('select2-drop-auto-width');
- }
-
- //console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
- //console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body().scrollTop(), "enough?", enoughRoomAbove);
-
- // fix positioning when body has an offset and is not position: static
- if (this.body().css('position') !== 'static') {
- bodyOffset = this.body().offset();
- dropTop -= bodyOffset.top;
- dropLeft -= bodyOffset.left;
- }
-
- if (!enoughRoomOnRight) {
- dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;
- }
-
- css = {
- left: dropLeft,
- width: width
- };
-
- if (above) {
- css.top = offset.top - dropHeight;
- css.bottom = 'auto';
- this.container.addClass("select2-drop-above");
- $dropdown.addClass("select2-drop-above");
- }
- else {
- css.top = dropTop;
- css.bottom = 'auto';
- this.container.removeClass("select2-drop-above");
- $dropdown.removeClass("select2-drop-above");
- }
- css = $.extend(css, evaluate(this.opts.dropdownCss));
-
- $dropdown.css(css);
- },
-
- // abstract
- shouldOpen: function() {
- var event;
-
- if (this.opened()) return false;
-
- if (this._enabled === false || this._readonly === true) return false;
-
- event = $.Event("select2-opening");
- this.opts.element.trigger(event);
- return !event.isDefaultPrevented();
- },
-
- // abstract
- clearDropdownAlignmentPreference: function() {
- // clear the classes used to figure out the preference of where the dropdown should be opened
- this.container.removeClass("select2-drop-above");
- this.dropdown.removeClass("select2-drop-above");
- },
-
- /**
- * Opens the dropdown
- *
- * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,
- * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().
- */
- // abstract
- open: function () {
-
- if (!this.shouldOpen()) return false;
-
- this.opening();
-
- return true;
- },
-
- /**
- * Performs the opening of the dropdown
- */
- // abstract
- opening: function() {
- var cid = this.containerId,
- scroll = "scroll." + cid,
- resize = "resize."+cid,
- orient = "orientationchange."+cid,
- mask;
-
- this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
-
- this.clearDropdownAlignmentPreference();
-
- if(this.dropdown[0] !== this.body().children().last()[0]) {
- this.dropdown.detach().appendTo(this.body());
- }
-
- // create the dropdown mask if doesn't already exist
- mask = $("#select2-drop-mask");
- if (mask.length == 0) {
- mask = $(document.createElement("div"));
- mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask");
- mask.hide();
- mask.appendTo(this.body());
- mask.on("mousedown touchstart click", function (e) {
- // Prevent IE from generating a click event on the body
- reinsertElement(mask);
-
- var dropdown = $("#select2-drop"), self;
- if (dropdown.length > 0) {
- self=dropdown.data("select2");
- if (self.opts.selectOnBlur) {
- self.selectHighlighted({noFocus: true});
- }
- self.close({focus:true});
- e.preventDefault();
- e.stopPropagation();
- }
- });
- }
-
- // ensure the mask is always right before the dropdown
- if (this.dropdown.prev()[0] !== mask[0]) {
- this.dropdown.before(mask);
- }
-
- // move the global id to the correct dropdown
- $("#select2-drop").removeAttr("id");
- this.dropdown.attr("id", "select2-drop");
-
- // show the elements
- mask.show();
-
- this.positionDropdown();
- this.dropdown.show();
- this.positionDropdown();
-
- this.dropdown.addClass("select2-drop-active");
-
- // attach listeners to events that can change the position of the container and thus require
- // the position of the dropdown to be updated as well so it does not come unglued from the container
- var that = this;
- this.container.parents().add(window).each(function () {
- $(this).on(resize+" "+scroll+" "+orient, function (e) {
- that.positionDropdown();
- });
- });
-
-
- },
-
- // abstract
- close: function () {
- if (!this.opened()) return;
-
- var cid = this.containerId,
- scroll = "scroll." + cid,
- resize = "resize."+cid,
- orient = "orientationchange."+cid;
-
- // unbind event listeners
- this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });
-
- this.clearDropdownAlignmentPreference();
-
- $("#select2-drop-mask").hide();
- this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id
- this.dropdown.hide();
- this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active");
- this.results.empty();
-
-
- this.clearSearch();
- this.search.removeClass("select2-active");
- this.opts.element.trigger($.Event("select2-close"));
- },
-
- /**
- * Opens control, sets input value, and updates results.
- */
- // abstract
- externalSearch: function (term) {
- this.open();
- this.search.val(term);
- this.updateResults(false);
- },
-
- // abstract
- clearSearch: function () {
-
- },
-
- //abstract
- getMaximumSelectionSize: function() {
- return evaluate(this.opts.maximumSelectionSize);
- },
-
- // abstract
- ensureHighlightVisible: function () {
- var results = this.results, children, index, child, hb, rb, y, more;
-
- index = this.highlight();
-
- if (index < 0) return;
-
- if (index == 0) {
-
- // if the first element is highlighted scroll all the way to the top,
- // that way any unselectable headers above it will also be scrolled
- // into view
-
- results.scrollTop(0);
- return;
- }
-
- children = this.findHighlightableChoices().find('.select2-result-label');
-
- child = $(children[index]);
-
- hb = child.offset().top + child.outerHeight(true);
-
- // if this is the last child lets also make sure select2-more-results is visible
- if (index === children.length - 1) {
- more = results.find("li.select2-more-results");
- if (more.length > 0) {
- hb = more.offset().top + more.outerHeight(true);
- }
- }
-
- rb = results.offset().top + results.outerHeight(true);
- if (hb > rb) {
- results.scrollTop(results.scrollTop() + (hb - rb));
- }
- y = child.offset().top - results.offset().top;
-
- // make sure the top of the element is visible
- if (y < 0 && child.css('display') != 'none' ) {
- results.scrollTop(results.scrollTop() + y); // y is negative
- }
- },
-
- // abstract
- findHighlightableChoices: function() {
- return this.results.find(".select2-result-selectable:not(.select2-disabled):not(.select2-selected)");
- },
-
- // abstract
- moveHighlight: function (delta) {
- var choices = this.findHighlightableChoices(),
- index = this.highlight();
-
- while (index > -1 && index < choices.length) {
- index += delta;
- var choice = $(choices[index]);
- if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) {
- this.highlight(index);
- break;
- }
- }
- },
-
- // abstract
- highlight: function (index) {
- var choices = this.findHighlightableChoices(),
- choice,
- data;
-
- if (arguments.length === 0) {
- return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
- }
-
- if (index >= choices.length) index = choices.length - 1;
- if (index < 0) index = 0;
-
- this.removeHighlight();
-
- choice = $(choices[index]);
- choice.addClass("select2-highlighted");
-
- // ensure assistive technology can determine the active choice
- this.search.attr("aria-activedescendant", choice.find(".select2-result-label").attr("id"));
-
- this.ensureHighlightVisible();
-
- this.liveRegion.text(choice.text());
-
- data = choice.data("select2-data");
- if (data) {
- this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data });
- }
- },
-
- removeHighlight: function() {
- this.results.find(".select2-highlighted").removeClass("select2-highlighted");
- },
-
- // abstract
- countSelectableResults: function() {
- return this.findHighlightableChoices().length;
- },
-
- // abstract
- highlightUnderEvent: function (event) {
- var el = $(event.target).closest(".select2-result-selectable");
- if (el.length > 0 && !el.is(".select2-highlighted")) {
- var choices = this.findHighlightableChoices();
- this.highlight(choices.index(el));
- } else if (el.length == 0) {
- // if we are over an unselectable item remove all highlights
- this.removeHighlight();
- }
- },
-
- // abstract
- loadMoreIfNeeded: function () {
- var results = this.results,
- more = results.find("li.select2-more-results"),
- below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible
- page = this.resultsPage + 1,
- self=this,
- term=this.search.val(),
- context=this.context;
-
- if (more.length === 0) return;
- below = more.offset().top - results.offset().top - results.height();
-
- if (below <= this.opts.loadMorePadding) {
- more.addClass("select2-active");
- this.opts.query({
- element: this.opts.element,
- term: term,
- page: page,
- context: context,
- matcher: this.opts.matcher,
- callback: this.bind(function (data) {
-
- // ignore a response if the select2 has been closed before it was received
- if (!self.opened()) return;
-
-
- self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});
- self.postprocessResults(data, false, false);
-
- if (data.more===true) {
- more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1));
- window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
- } else {
- more.remove();
- }
- self.positionDropdown();
- self.resultsPage = page;
- self.context = data.context;
- this.opts.element.trigger({ type: "select2-loaded", items: data });
- })});
- }
- },
-
- /**
- * Default tokenizer function which does nothing
- */
- tokenize: function() {
-
- },
-
- /**
- * @param initial whether or not this is the call to this method right after the dropdown has been opened
- */
- // abstract
- updateResults: function (initial) {
- var search = this.search,
- results = this.results,
- opts = this.opts,
- data,
- self = this,
- input,
- term = search.val(),
- lastTerm = $.data(this.container, "select2-last-term"),
- // sequence number used to drop out-of-order responses
- queryNumber;
-
- // prevent duplicate queries against the same term
- if (initial !== true && lastTerm && equal(term, lastTerm)) return;
-
- $.data(this.container, "select2-last-term", term);
-
- // if the search is currently hidden we do not alter the results
- if (initial !== true && (this.showSearchInput === false || !this.opened())) {
- return;
- }
-
- function postRender() {
- search.removeClass("select2-active");
- self.positionDropdown();
- if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {
- self.liveRegion.text(results.text());
- }
- else {
- self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable').length));
- }
- }
-
- function render(html) {
- results.html(html);
- postRender();
- }
-
- queryNumber = ++this.queryCount;
-
- var maxSelSize = this.getMaximumSelectionSize();
- if (maxSelSize >=1) {
- data = this.data();
- if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) {
- render("<li class='select2-selection-limit'>" + evaluate(opts.formatSelectionTooBig, maxSelSize) + "</li>");
- return;
- }
- }
-
- if (search.val().length < opts.minimumInputLength) {
- if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) {
- render("<li class='select2-no-results'>" + evaluate(opts.formatInputTooShort, search.val(), opts.minimumInputLength) + "</li>");
- } else {
- render("");
- }
- if (initial && this.showSearch) this.showSearch(true);
- return;
- }
-
- if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {
- if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) {
- render("<li class='select2-no-results'>" + evaluate(opts.formatInputTooLong, search.val(), opts.maximumInputLength) + "</li>");
- } else {
- render("");
- }
- return;
- }
-
- if (opts.formatSearching && this.findHighlightableChoices().length === 0) {
- render("<li class='select2-searching'>" + evaluate(opts.formatSearching) + "</li>");
- }
-
- search.addClass("select2-active");
-
- this.removeHighlight();
-
- // give the tokenizer a chance to pre-process the input
- input = this.tokenize();
- if (input != undefined && input != null) {
- search.val(input);
- }
-
- this.resultsPage = 1;
-
- opts.query({
- element: opts.element,
- term: search.val(),
- page: this.resultsPage,
- context: null,
- matcher: opts.matcher,
- callback: this.bind(function (data) {
- var def; // default choice
-
- // ignore old responses
- if (queryNumber != this.queryCount) {
- return;
- }
-
- // ignore a response if the select2 has been closed before it was received
- if (!this.opened()) {
- this.search.removeClass("select2-active");
- return;
- }
-
- // save context, if any
- this.context = (data.context===undefined) ? null : data.context;
- // create a default choice and prepend it to the list
- if (this.opts.createSearchChoice && search.val() !== "") {
- def = this.opts.createSearchChoice.call(self, search.val(), data.results);
- if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {
- if ($(data.results).filter(
- function () {
- return equal(self.id(this), self.id(def));
- }).length === 0) {
- this.opts.createSearchChoicePosition(data.results, def);
- }
- }
- }
-
- if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) {
- render("<li class='select2-no-results'>" + evaluate(opts.formatNoMatches, search.val()) + "</li>");
- return;
- }
-
- results.empty();
- self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});
-
- if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) {
- results.append("<li class='select2-more-results'>" + self.opts.escapeMarkup(evaluate(opts.formatLoadMore, this.resultsPage)) + "</li>");
- window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
- }
-
- this.postprocessResults(data, initial);
-
- postRender();
-
- this.opts.element.trigger({ type: "select2-loaded", items: data });
- })});
- },
-
- // abstract
- cancel: function () {
- this.close();
- },
-
- // abstract
- blur: function () {
- // if selectOnBlur == true, select the currently highlighted option
- if (this.opts.selectOnBlur)
- this.selectHighlighted({noFocus: true});
-
- this.close();
- this.container.removeClass("select2-container-active");
- // synonymous to .is(':focus'), which is available in jquery >= 1.6
- if (this.search[0] === document.activeElement) { this.search.blur(); }
- this.clearSearch();
- this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
- },
-
- // abstract
- focusSearch: function () {
- focus(this.search);
- },
-
- // abstract
- selectHighlighted: function (options) {
- var index=this.highlight(),
- highlighted=this.results.find(".select2-highlighted"),
- data = highlighted.closest('.select2-result').data("select2-data");
-
- if (data) {
- this.highlight(index);
- this.onSelect(data, options);
- } else if (options && options.noFocus) {
- this.close();
- }
- },
-
- // abstract
- getPlaceholder: function () {
- var placeholderOption;
- return this.opts.element.attr("placeholder") ||
- this.opts.element.attr("data-placeholder") || // jquery 1.4 compat
- this.opts.element.data("placeholder") ||
- this.opts.placeholder ||
- ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);
- },
-
- // abstract
- getPlaceholderOption: function() {
- if (this.select) {
- var firstOption = this.select.children('option').first();
- if (this.opts.placeholderOption !== undefined ) {
- //Determine the placeholder option based on the specified placeholderOption setting
- return (this.opts.placeholderOption === "first" && firstOption) ||
- (typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select));
- } else if (firstOption.text() === "" && firstOption.val() === "") {
- //No explicit placeholder option specified, use the first if it's blank
- return firstOption;
- }
- }
- },
-
- /**
- * Get the desired width for the container element. This is
- * derived first from option `width` passed to select2, then
- * the inline 'style' on the original element, and finally
- * falls back to the jQuery calculated element width.
- */
- // abstract
- initContainerWidth: function () {
- function resolveContainerWidth() {
- var style, attrs, matches, i, l, attr;
-
- if (this.opts.width === "off") {
- return null;
- } else if (this.opts.width === "element"){
- return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';
- } else if (this.opts.width === "copy" || this.opts.width === "resolve") {
- // check if there is inline style on the element that contains width
- style = this.opts.element.attr('style');
- if (style !== undefined) {
- attrs = style.split(';');
- for (i = 0, l = attrs.length; i < l; i = i + 1) {
- attr = attrs[i].replace(/\s/g, '');
- matches = attr.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);
- if (matches !== null && matches.length >= 1)
- return matches[1];
- }
- }
-
- if (this.opts.width === "resolve") {
- // next check if css('width') can resolve a width that is percent based, this is sometimes possible
- // when attached to input type=hidden or elements hidden via css
- style = this.opts.element.css('width');
- if (style.indexOf("%") > 0) return style;
-
- // finally, fallback on the calculated width of the element
- return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');
- }
-
- return null;
- } else if ($.isFunction(this.opts.width)) {
- return this.opts.width();
- } else {
- return this.opts.width;
- }
- };
-
- var width = resolveContainerWidth.call(this);
- if (width !== null) {
- this.container.css("width", width);
- }
- }
- });
-
- SingleSelect2 = clazz(AbstractSelect2, {
-
- // single
-
- createContainer: function () {
- var container = $(document.createElement("div")).attr({
- "class": "select2-container"
- }).html([
- "<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>",
- " <span class='select2-chosen'>&nbsp;</span><abbr class='select2-search-choice-close'></abbr>",
- " <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>",
- "</a>",
- "<label for='' class='select2-offscreen'></label>",
- "<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />",
- "<div class='select2-drop select2-display-none'>",
- " <div class='select2-search'>",
- " <label for='' class='select2-offscreen'></label>",
- " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'",
- " aria-autocomplete='list' />",
- " </div>",
- " <ul class='select2-results' role='listbox'>",
- " </ul>",
- "</div>"].join(""));
- return container;
- },
-
- // single
- enableInterface: function() {
- if (this.parent.enableInterface.apply(this, arguments)) {
- this.focusser.prop("disabled", !this.isInterfaceEnabled());
- }
- },
-
- // single
- opening: function () {
- var el, range, len;
-
- if (this.opts.minimumResultsForSearch >= 0) {
- this.showSearch(true);
- }
-
- this.parent.opening.apply(this, arguments);
-
- if (this.showSearchInput !== false) {
- // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range
- // all other browsers handle this just fine
-
- this.search.val(this.focusser.val());
- }
- this.search.focus();
- // move the cursor to the end after focussing, otherwise it will be at the beginning and
- // new text will appear *before* focusser.val()
- el = this.search.get(0);
- if (el.createTextRange) {
- range = el.createTextRange();
- range.collapse(false);
- range.select();
- } else if (el.setSelectionRange) {
- len = this.search.val().length;
- el.setSelectionRange(len, len);
- }
-
- // initializes search's value with nextSearchTerm (if defined by user)
- // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
- if(this.search.val() === "") {
- if(this.nextSearchTerm != undefined){
- this.search.val(this.nextSearchTerm);
- this.search.select();
- }
- }
-
- this.focusser.prop("disabled", true).val("");
- this.updateResults(true);
- this.opts.element.trigger($.Event("select2-open"));
- },
-
- // single
- close: function (params) {
- if (!this.opened()) return;
- this.parent.close.apply(this, arguments);
-
- params = params || {focus: true};
- this.focusser.prop("disabled", false);
-
- if (params.focus) {
- this.focusser.focus();
- }
- },
-
- // single
- focus: function () {
- if (this.opened()) {
- this.close();
- } else {
- this.focusser.prop("disabled", false);
- this.focusser.focus();
- }
- },
-
- // single
- isFocused: function () {
- return this.container.hasClass("select2-container-active");
- },
-
- // single
- cancel: function () {
- this.parent.cancel.apply(this, arguments);
- this.focusser.prop("disabled", false);
- this.focusser.focus();
- },
-
- // single
- destroy: function() {
- $("label[for='" + this.focusser.attr('id') + "']")
- .attr('for', this.opts.element.attr("id"));
- this.parent.destroy.apply(this, arguments);
- },
-
- // single
- initContainer: function () {
-
- var selection,
- container = this.container,
- dropdown = this.dropdown,
- idSuffix = nextUid(),
- elementLabel;
-
- if (this.opts.minimumResultsForSearch < 0) {
- this.showSearch(false);
- } else {
- this.showSearch(true);
- }
-
- this.selection = selection = container.find(".select2-choice");
-
- this.focusser = container.find(".select2-focusser");
-
- // add aria associations
- selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix);
- this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix);
- this.results.attr("id", "select2-results-"+idSuffix);
- this.search.attr("aria-owns", "select2-results-"+idSuffix);
-
- // rewrite labels from original element to focusser
- this.focusser.attr("id", "s2id_autogen"+idSuffix);
-
- elementLabel = $("label[for='" + this.opts.element.attr("id") + "']");
-
- this.focusser.prev()
- .text(elementLabel.text())
- .attr('for', this.focusser.attr('id'));
-
- // Ensure the original element retains an accessible name
- var originalTitle = this.opts.element.attr("title");
- this.opts.element.attr("title", (originalTitle || elementLabel.text()));
-
- this.focusser.attr("tabindex", this.elementTabIndex);
-
- // write label for search field using the label from the focusser element
- this.search.attr("id", this.focusser.attr('id') + '_search');
-
- this.search.prev()
- .text($("label[for='" + this.focusser.attr('id') + "']").text())
- .attr('for', this.search.attr('id'));
-
- this.search.on("keydown", this.bind(function (e) {
- if (!this.isInterfaceEnabled()) return;
-
- if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
- // prevent the page from scrolling
- killEvent(e);
- return;
- }
-
- switch (e.which) {
- case KEY.UP:
- case KEY.DOWN:
- this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
- killEvent(e);
- return;
- case KEY.ENTER:
- this.selectHighlighted();
- killEvent(e);
- return;
- case KEY.TAB:
- this.selectHighlighted({noFocus: true});
- return;
- case KEY.ESC:
- this.cancel(e);
- killEvent(e);
- return;
- }
- }));
-
- this.search.on("blur", this.bind(function(e) {
- // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.
- // without this the search field loses focus which is annoying
- if (document.activeElement === this.body().get(0)) {
- window.setTimeout(this.bind(function() {
- if (this.opened()) {
- this.search.focus();
- }
- }), 0);
- }
- }));
-
- this.focusser.on("keydown", this.bind(function (e) {
- if (!this.isInterfaceEnabled()) return;
-
- if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
- return;
- }
-
- if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {
- killEvent(e);
- return;
- }
-
- if (e.which == KEY.DOWN || e.which == KEY.UP
- || (e.which == KEY.ENTER && this.opts.openOnEnter)) {
-
- if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;
-
- this.open();
- killEvent(e);
- return;
- }
-
- if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {
- if (this.opts.allowClear) {
- this.clear();
- }
- killEvent(e);
- return;
- }
- }));
-
-
- installKeyUpChangeEvent(this.focusser);
- this.focusser.on("keyup-change input", this.bind(function(e) {
- if (this.opts.minimumResultsForSearch >= 0) {
- e.stopPropagation();
- if (this.opened()) return;
- this.open();
- }
- }));
-
- selection.on("mousedown touchstart", "abbr", this.bind(function (e) {
- if (!this.isInterfaceEnabled()) return;
- this.clear();
- killEventImmediately(e);
- this.close();
- this.selection.focus();
- }));
-
- selection.on("mousedown touchstart", this.bind(function (e) {
- // Prevent IE from generating a click event on the body
- reinsertElement(selection);
-
- if (!this.container.hasClass("select2-container-active")) {
- this.opts.element.trigger($.Event("select2-focus"));
- }
-
- if (this.opened()) {
- this.close();
- } else if (this.isInterfaceEnabled()) {
- this.open();
- }
-
- killEvent(e);
- }));
-
- dropdown.on("mousedown touchstart", this.bind(function() { this.search.focus(); }));
-
- selection.on("focus", this.bind(function(e) {
- killEvent(e);
- }));
-
- this.focusser.on("focus", this.bind(function(){
- if (!this.container.hasClass("select2-container-active")) {
- this.opts.element.trigger($.Event("select2-focus"));
- }
- this.container.addClass("select2-container-active");
- })).on("blur", this.bind(function() {
- if (!this.opened()) {
- this.container.removeClass("select2-container-active");
- this.opts.element.trigger($.Event("select2-blur"));
- }
- }));
- this.search.on("focus", this.bind(function(){
- if (!this.container.hasClass("select2-container-active")) {
- this.opts.element.trigger($.Event("select2-focus"));
- }
- this.container.addClass("select2-container-active");
- }));
-
- this.initContainerWidth();
- this.opts.element.addClass("select2-offscreen");
- this.setPlaceholder();
-
- },
-
- // single
- clear: function(triggerChange) {
- var data=this.selection.data("select2-data");
- if (data) { // guard against queued quick consecutive clicks
- var evt = $.Event("select2-clearing");
- this.opts.element.trigger(evt);
- if (evt.isDefaultPrevented()) {
- return;
- }
- var placeholderOption = this.getPlaceholderOption();
- this.opts.element.val(placeholderOption ? placeholderOption.val() : "");
- this.selection.find(".select2-chosen").empty();
- this.selection.removeData("select2-data");
- this.setPlaceholder();
-
- if (triggerChange !== false){
- this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
- this.triggerChange({removed:data});
- }
- }
- },
-
- /**
- * Sets selection based on source element's value
- */
- // single
- initSelection: function () {
- var selected;
- if (this.isPlaceholderOptionSelected()) {
- this.updateSelection(null);
- this.close();
- this.setPlaceholder();
- } else {
- var self = this;
- this.opts.initSelection.call(null, this.opts.element, function(selected){
- if (selected !== undefined && selected !== null) {
- self.updateSelection(selected);
- self.close();
- self.setPlaceholder();
- self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val());
- }
- });
- }
- },
-
- isPlaceholderOptionSelected: function() {
- var placeholderOption;
- if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered
- return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected"))
- || (this.opts.element.val() === "")
- || (this.opts.element.val() === undefined)
- || (this.opts.element.val() === null);
- },
-
- // single
- prepareOpts: function () {
- var opts = this.parent.prepareOpts.apply(this, arguments),
- self=this;
-
- if (opts.element.get(0).tagName.toLowerCase() === "select") {
- // install the selection initializer
- opts.initSelection = function (element, callback) {
- var selected = element.find("option").filter(function() { return this.selected });
- // a single select box always has a value, no need to null check 'selected'
- callback(self.optionToData(selected));
- };
- } else if ("data" in opts) {
- // install default initSelection when applied to hidden input and data is local
- opts.initSelection = opts.initSelection || function (element, callback) {
- var id = element.val();
- //search in data by id, storing the actual matching item
- var match = null;
- opts.query({
- matcher: function(term, text, el){
- var is_match = equal(id, opts.id(el));
- if (is_match) {
- match = el;
- }
- return is_match;
- },
- callback: !$.isFunction(callback) ? $.noop : function() {
- callback(match);
- }
- });
- };
- }
-
- return opts;
- },
-
- // single
- getPlaceholder: function() {
- // if a placeholder is specified on a single select without a valid placeholder option ignore it
- if (this.select) {
- if (this.getPlaceholderOption() === undefined) {
- return undefined;
- }
- }
-
- return this.parent.getPlaceholder.apply(this, arguments);
- },
-
- // single
- setPlaceholder: function () {
- var placeholder = this.getPlaceholder();
-
- if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {
-
- // check for a placeholder option if attached to a select
- if (this.select && this.getPlaceholderOption() === undefined) return;
-
- this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder));
-
- this.selection.addClass("select2-default");
-
- this.container.removeClass("select2-allowclear");
- }
- },
-
- // single
- postprocessResults: function (data, initial, noHighlightUpdate) {
- var selected = 0, selectedElm = null, self = this, showSearchInput = true;
-
- // find the selected element in the result list
-
- this.findHighlightableChoices().each2(function (i, elm) {
- if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
- selected = i;
- selectedElm = elm;
- return false;
- }
- });
-
- // and highlight it
- if (noHighlightUpdate !== false) {
- if (initial === true && selected >= 0) {
- // By default, the selected item is displayed inside the result list from a single select
- // User can provide an implementation for 'hideSelectionFromResult' and hide it
- if(selectedElm !== null) {
- if(this.opts.hideSelectionFromResult(selectedElm))
- selectedElm.addClass("select2-selected");
- }
- else
- this.highlight(selected);
- } else {
- this.highlight(0);
- }
- }
-
- // hide the search box if this is the first we got the results and there are enough of them for search
-
- if (initial === true) {
- var min = this.opts.minimumResultsForSearch;
- if (min >= 0) {
- this.showSearch(countResults(data.results) >= min);
- }
- }
- },
-
- // single
- showSearch: function(showSearchInput) {
- if (this.showSearchInput === showSearchInput) return;
-
- this.showSearchInput = showSearchInput;
-
- this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput);
- this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput);
- //add "select2-with-searchbox" to the container if search box is shown
- $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput);
- },
-
- // single
- onSelect: function (data, options) {
-
- if (!this.triggerSelect(data)) { return; }
-
- var old = this.opts.element.val(),
- oldData = this.data();
-
- this.opts.element.val(this.id(data));
- this.updateSelection(data);
-
- this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data });
-
- this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
- this.close();
-
- if (!options || !options.noFocus)
- this.focusser.focus();
-
- if (!equal(old, this.id(data))) { this.triggerChange({added:data,removed:oldData}); }
- },
-
- // single
- updateSelection: function (data) {
-
- var container=this.selection.find(".select2-chosen"), formatted, cssClass;
-
- this.selection.data("select2-data", data);
-
- container.empty();
- if (data !== null) {
- formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);
- }
- if (formatted !== undefined) {
- container.append(formatted);
- }
- cssClass=this.opts.formatSelectionCssClass(data, container);
- if (cssClass !== undefined) {
- container.addClass(cssClass);
- }
-
- this.selection.removeClass("select2-default");
-
- if (this.opts.allowClear && this.getPlaceholder() !== undefined) {
- this.container.addClass("select2-allowclear");
- }
- },
-
- // single
- val: function () {
- var val,
- triggerChange = false,
- data = null,
- self = this,
- oldData = this.data();
-
- if (arguments.length === 0) {
- return this.opts.element.val();
- }
-
- val = arguments[0];
-
- if (arguments.length > 1) {
- triggerChange = arguments[1];
- }
-
- if (this.select) {
- this.select
- .val(val)
- .find("option").filter(function() { return this.selected }).each2(function (i, elm) {
- data = self.optionToData(elm);
- return false;
- });
- this.updateSelection(data);
- this.setPlaceholder();
- if (triggerChange) {
- this.triggerChange({added: data, removed:oldData});
- }
- } else {
- // val is an id. !val is true for [undefined,null,'',0] - 0 is legal
- if (!val && val !== 0) {
- this.clear(triggerChange);
- return;
- }
- if (this.opts.initSelection === undefined) {
- throw new Error("cannot call val() if initSelection() is not defined");
- }
- this.opts.element.val(val);
- this.opts.initSelection(this.opts.element, function(data){
- self.opts.element.val(!data ? "" : self.id(data));
- self.updateSelection(data);
- self.setPlaceholder();
- if (triggerChange) {
- self.triggerChange({added: data, removed:oldData});
- }
- });
- }
- },
-
- // single
- clearSearch: function () {
- this.search.val("");
- this.focusser.val("");
- },
-
- // single
- data: function(value) {
- var data,
- triggerChange = false;
-
- if (arguments.length === 0) {
- data = this.selection.data("select2-data");
- if (data == undefined) data = null;
- return data;
- } else {
- if (arguments.length > 1) {
- triggerChange = arguments[1];
- }
- if (!value) {
- this.clear(triggerChange);
- } else {
- data = this.data();
- this.opts.element.val(!value ? "" : this.id(value));
- this.updateSelection(value);
- if (triggerChange) {
- this.triggerChange({added: value, removed:data});
- }
- }
- }
- }
- });
-
- MultiSelect2 = clazz(AbstractSelect2, {
-
- // multi
- createContainer: function () {
- var container = $(document.createElement("div")).attr({
- "class": "select2-container select2-container-multi"
- }).html([
- "<ul class='select2-choices'>",
- " <li class='select2-search-field'>",
- " <label for='' class='select2-offscreen'></label>",
- " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>",
- " </li>",
- "</ul>",
- "<div class='select2-drop select2-drop-multi select2-display-none'>",
- " <ul class='select2-results'>",
- " </ul>",
- "</div>"].join(""));
- return container;
- },
-
- // multi
- prepareOpts: function () {
- var opts = this.parent.prepareOpts.apply(this, arguments),
- self=this;
-
- // TODO validate placeholder is a string if specified
-
- if (opts.element.get(0).tagName.toLowerCase() === "select") {
- // install the selection initializer
- opts.initSelection = function (element, callback) {
-
- var data = [];
-
- element.find("option").filter(function() { return this.selected }).each2(function (i, elm) {
- data.push(self.optionToData(elm));
- });
- callback(data);
- };
- } else if ("data" in opts) {
- // install default initSelection when applied to hidden input and data is local
- opts.initSelection = opts.initSelection || function (element, callback) {
- var ids = splitVal(element.val(), opts.separator);
- //search in data by array of ids, storing matching items in a list
- var matches = [];
- opts.query({
- matcher: function(term, text, el){
- var is_match = $.grep(ids, function(id) {
- return equal(id, opts.id(el));
- }).length;
- if (is_match) {
- matches.push(el);
- }
- return is_match;
- },
- callback: !$.isFunction(callback) ? $.noop : function() {
- // reorder matches based on the order they appear in the ids array because right now
- // they are in the order in which they appear in data array
- var ordered = [];
- for (var i = 0; i < ids.length; i++) {
- var id = ids[i];
- for (var j = 0; j < matches.length; j++) {
- var match = matches[j];
- if (equal(id, opts.id(match))) {
- ordered.push(match);
- matches.splice(j, 1);
- break;
- }
- }
- }
- callback(ordered);
- }
- });
- };
- }
-
- return opts;
- },
-
- // multi
- selectChoice: function (choice) {
-
- var selected = this.container.find(".select2-search-choice-focus");
- if (selected.length && choice && choice[0] == selected[0]) {
-
- } else {
- if (selected.length) {
- this.opts.element.trigger("choice-deselected", selected);
- }
- selected.removeClass("select2-search-choice-focus");
- if (choice && choice.length) {
- this.close();
- choice.addClass("select2-search-choice-focus");
- this.opts.element.trigger("choice-selected", choice);
- }
- }
- },
-
- // multi
- destroy: function() {
- $("label[for='" + this.search.attr('id') + "']")
- .attr('for', this.opts.element.attr("id"));
- this.parent.destroy.apply(this, arguments);
- },
-
- // multi
- initContainer: function () {
-
- var selector = ".select2-choices", selection;
-
- this.searchContainer = this.container.find(".select2-search-field");
- this.selection = selection = this.container.find(selector);
-
- var _this = this;
- this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) {
- //killEvent(e);
- _this.search[0].focus();
- _this.selectChoice($(this));
- });
-
- // rewrite labels from original element to focusser
- this.search.attr("id", "s2id_autogen"+nextUid());
-
- this.search.prev()
- .text($("label[for='" + this.opts.element.attr("id") + "']").text())
- .attr('for', this.search.attr('id'));
-
- this.search.on("input paste", this.bind(function() {
- if (!this.isInterfaceEnabled()) return;
- if (!this.opened()) {
- this.open();
- }
- }));
-
- this.search.attr("tabindex", this.elementTabIndex);
-
- this.keydowns = 0;
- this.search.on("keydown", this.bind(function (e) {
- if (!this.isInterfaceEnabled()) return;
-
- ++this.keydowns;
- var selected = selection.find(".select2-search-choice-focus");
- var prev = selected.prev(".select2-search-choice:not(.select2-locked)");
- var next = selected.next(".select2-search-choice:not(.select2-locked)");
- var pos = getCursorInfo(this.search);
-
- if (selected.length &&
- (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {
- var selectedChoice = selected;
- if (e.which == KEY.LEFT && prev.length) {
- selectedChoice = prev;
- }
- else if (e.which == KEY.RIGHT) {
- selectedChoice = next.length ? next : null;
- }
- else if (e.which === KEY.BACKSPACE) {
- this.unselect(selected.first());
- this.search.width(10);
- selectedChoice = prev.length ? prev : next;
- } else if (e.which == KEY.DELETE) {
- this.unselect(selected.first());
- this.search.width(10);
- selectedChoice = next.length ? next : null;
- } else if (e.which == KEY.ENTER) {
- selectedChoice = null;
- }
-
- this.selectChoice(selectedChoice);
- killEvent(e);
- if (!selectedChoice || !selectedChoice.length) {
- this.open();
- }
- return;
- } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)
- || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {
-
- this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last());
- killEvent(e);
- return;
- } else {
- this.selectChoice(null);
- }
-
- if (this.opened()) {
- switch (e.which) {
- case KEY.UP:
- case KEY.DOWN:
- this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
- killEvent(e);
- return;
- case KEY.ENTER:
- this.selectHighlighted();
- killEvent(e);
- return;
- case KEY.TAB:
- this.selectHighlighted({noFocus:true});
- this.close();
- return;
- case KEY.ESC:
- this.cancel(e);
- killEvent(e);
- return;
- }
- }
-
- if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)
- || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {
- return;
- }
-
- if (e.which === KEY.ENTER) {
- if (this.opts.openOnEnter === false) {
- return;
- } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
- return;
- }
- }
-
- this.open();
-
- if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
- // prevent the page from scrolling
- killEvent(e);
- }
-
- if (e.which === KEY.ENTER) {
- // prevent form from being submitted
- killEvent(e);
- }
-
- }));
-
- this.search.on("keyup", this.bind(function (e) {
- this.keydowns = 0;
- this.resizeSearch();
- })
- );
-
- this.search.on("blur", this.bind(function(e) {
- this.container.removeClass("select2-container-active");
- this.search.removeClass("select2-focused");
- this.selectChoice(null);
- if (!this.opened()) this.clearSearch();
- e.stopImmediatePropagation();
- this.opts.element.trigger($.Event("select2-blur"));
- }));
-
- this.container.on("click", selector, this.bind(function (e) {
- if (!this.isInterfaceEnabled()) return;
- if ($(e.target).closest(".select2-search-choice").length > 0) {
- // clicked inside a select2 search choice, do not open
- return;
- }
- this.selectChoice(null);
- this.clearPlaceholder();
- if (!this.container.hasClass("select2-container-active")) {
- this.opts.element.trigger($.Event("select2-focus"));
- }
- this.open();
- this.focusSearch();
- e.preventDefault();
- }));
-
- this.container.on("focus", selector, this.bind(function () {
- if (!this.isInterfaceEnabled()) return;
- if (!this.container.hasClass("select2-container-active")) {
- this.opts.element.trigger($.Event("select2-focus"));
- }
- this.container.addClass("select2-container-active");
- this.dropdown.addClass("select2-drop-active");
- this.clearPlaceholder();
- }));
-
- this.initContainerWidth();
- this.opts.element.addClass("select2-offscreen");
-
- // set the placeholder if necessary
- this.clearSearch();
- },
-
- // multi
- enableInterface: function() {
- if (this.parent.enableInterface.apply(this, arguments)) {
- this.search.prop("disabled", !this.isInterfaceEnabled());
- }
- },
-
- // multi
- initSelection: function () {
- var data;
- if (this.opts.element.val() === "" && this.opts.element.text() === "") {
- this.updateSelection([]);
- this.close();
- // set the placeholder if necessary
- this.clearSearch();
- }
- if (this.select || this.opts.element.val() !== "") {
- var self = this;
- this.opts.initSelection.call(null, this.opts.element, function(data){
- if (data !== undefined && data !== null) {
- self.updateSelection(data);
- self.close();
- // set the placeholder if necessary
- self.clearSearch();
- }
- });
- }
- },
-
- // multi
- clearSearch: function () {
- var placeholder = this.getPlaceholder(),
- maxWidth = this.getMaxSearchWidth();
-
- if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) {
- this.search.val(placeholder).addClass("select2-default");
- // stretch the search box to full width of the container so as much of the placeholder is visible as possible
- // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944
- this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width"));
- } else {
- this.search.val("").width(10);
- }
- },
-
- // multi
- clearPlaceholder: function () {
- if (this.search.hasClass("select2-default")) {
- this.search.val("").removeClass("select2-default");
- }
- },
-
- // multi
- opening: function () {
- this.clearPlaceholder(); // should be done before super so placeholder is not used to search
- this.resizeSearch();
-
- this.parent.opening.apply(this, arguments);
-
- this.focusSearch();
-
- // initializes search's value with nextSearchTerm (if defined by user)
- // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
- if(this.search.val() === "") {
- if(this.nextSearchTerm != undefined){
- this.search.val(this.nextSearchTerm);
- this.search.select();
- }
- }
-
- this.updateResults(true);
- this.search.focus();
- this.opts.element.trigger($.Event("select2-open"));
- },
-
- // multi
- close: function () {
- if (!this.opened()) return;
- this.parent.close.apply(this, arguments);
- },
-
- // multi
- focus: function () {
- this.close();
- this.search.focus();
- },
-
- // multi
- isFocused: function () {
- return this.search.hasClass("select2-focused");
- },
-
- // multi
- updateSelection: function (data) {
- var ids = [], filtered = [], self = this;
-
- // filter out duplicates
- $(data).each(function () {
- if (indexOf(self.id(this), ids) < 0) {
- ids.push(self.id(this));
- filtered.push(this);
- }
- });
- data = filtered;
-
- this.selection.find(".select2-search-choice").remove();
- $(data).each(function () {
- self.addSelectedChoice(this);
- });
- self.postprocessResults();
- },
-
- // multi
- tokenize: function() {
- var input = this.search.val();
- input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);
- if (input != null && input != undefined) {
- this.search.val(input);
- if (input.length > 0) {
- this.open();
- }
- }
-
- },
-
- // multi
- onSelect: function (data, options) {
-
- if (!this.triggerSelect(data)) { return; }
-
- this.addSelectedChoice(data);
-
- this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data });
-
- // keep track of the search's value before it gets cleared
- this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
-
- this.clearSearch();
- this.updateResults();
-
- if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);
-
- if (this.opts.closeOnSelect) {
- this.close();
- this.search.width(10);
- } else {
- if (this.countSelectableResults()>0) {
- this.search.width(10);
- this.resizeSearch();
- if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {
- // if we reached max selection size repaint the results so choices
- // are replaced with the max selection reached message
- this.updateResults(true);
- } else {
- // initializes search's value with nextSearchTerm and update search result
- if(this.nextSearchTerm != undefined){
- this.search.val(this.nextSearchTerm);
- this.updateResults();
- this.search.select();
- }
- }
- this.positionDropdown();
- } else {
- // if nothing left to select close
- this.close();
- this.search.width(10);
- }
- }
-
- // since its not possible to select an element that has already been
- // added we do not need to check if this is a new element before firing change
- this.triggerChange({ added: data });
-
- if (!options || !options.noFocus)
- this.focusSearch();
- },
-
- // multi
- cancel: function () {
- this.close();
- this.focusSearch();
- },
-
- addSelectedChoice: function (data) {
- var enableChoice = !data.locked,
- enabledItem = $(
- "<li class='select2-search-choice'>" +
- " <div></div>" +
- " <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>" +
- "</li>"),
- disabledItem = $(
- "<li class='select2-search-choice select2-locked'>" +
- "<div></div>" +
- "</li>");
- var choice = enableChoice ? enabledItem : disabledItem,
- id = this.id(data),
- val = this.getVal(),
- formatted,
- cssClass;
-
- formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup);
- if (formatted != undefined) {
- choice.find("div").replaceWith("<div>"+formatted+"</div>");
- }
- cssClass=this.opts.formatSelectionCssClass(data, choice.find("div"));
- if (cssClass != undefined) {
- choice.addClass(cssClass);
- }
-
- if(enableChoice){
- choice.find(".select2-search-choice-close")
- .on("mousedown", killEvent)
- .on("click dblclick", this.bind(function (e) {
- if (!this.isInterfaceEnabled()) return;
-
- $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){
- this.unselect($(e.target));
- this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
- this.close();
- this.focusSearch();
- })).dequeue();
- killEvent(e);
- })).on("focus", this.bind(function () {
- if (!this.isInterfaceEnabled()) return;
- this.container.addClass("select2-container-active");
- this.dropdown.addClass("select2-drop-active");
- }));
- }
-
- choice.data("select2-data", data);
- choice.insertBefore(this.searchContainer);
-
- val.push(id);
- this.setVal(val);
- },
-
- // multi
- unselect: function (selected) {
- var val = this.getVal(),
- data,
- index;
- selected = selected.closest(".select2-search-choice");
-
- if (selected.length === 0) {
- throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
- }
-
- data = selected.data("select2-data");
-
- if (!data) {
- // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
- // and invoked on an element already removed
- return;
- }
-
- while((index = indexOf(this.id(data), val)) >= 0) {
- val.splice(index, 1);
- this.setVal(val);
- if (this.select) this.postprocessResults();
- }
-
- var evt = $.Event("select2-removing");
- evt.val = this.id(data);
- evt.choice = data;
- this.opts.element.trigger(evt);
-
- if (evt.isDefaultPrevented()) {
- return;
- }
-
- selected.remove();
-
- this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
- this.triggerChange({ removed: data });
- },
-
- // multi
- postprocessResults: function (data, initial, noHighlightUpdate) {
- var val = this.getVal(),
- choices = this.results.find(".select2-result"),
- compound = this.results.find(".select2-result-with-children"),
- self = this;
-
- choices.each2(function (i, choice) {
- var id = self.id(choice.data("select2-data"));
- if (indexOf(id, val) >= 0) {
- // By default, the selected item is hidden from the result list inside a multi select
- // User can provide an implementation for 'hideSelectionFromResult' and allow the same
- // element to be selected multiple times.
- if(self.opts.hideSelectionFromResult(choice) === undefined || self.opts.hideSelectionFromResult(choice)) {
- choice.addClass("select2-selected");
- // mark all children of the selected parent as selected
- choice.find(".select2-result-selectable").addClass("select2-selected");
- }
- }
- });
-
- compound.each2(function(i, choice) {
- // hide an optgroup if it doesn't have any selectable children
- if (!choice.is('.select2-result-selectable')
- && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) {
- choice.addClass("select2-selected");
- }
- });
-
- if (this.highlight() == -1 && noHighlightUpdate !== false){
- self.highlight(0);
- }
-
- //If all results are chosen render formatNoMatches
- if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){
- if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) {
- if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) {
- this.results.append("<li class='select2-no-results'>" + evaluate(self.opts.formatNoMatches, self.search.val()) + "</li>");
- }
- }
- }
-
- },
-
- // multi
- getMaxSearchWidth: function() {
- return this.selection.width() - getSideBorderPadding(this.search);
- },
-
- // multi
- resizeSearch: function () {
- var minimumWidth, left, maxWidth, containerLeft, searchWidth,
- sideBorderPadding = getSideBorderPadding(this.search);
-
- minimumWidth = measureTextWidth(this.search) + 10;
-
- left = this.search.offset().left;
-
- maxWidth = this.selection.width();
- containerLeft = this.selection.offset().left;
-
- searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;
-
- if (searchWidth < minimumWidth) {
- searchWidth = maxWidth - sideBorderPadding;
- }
-
- if (searchWidth < 40) {
- searchWidth = maxWidth - sideBorderPadding;
- }
-
- if (searchWidth <= 0) {
- searchWidth = minimumWidth;
- }
-
- this.search.width(Math.floor(searchWidth));
- },
-
- // multi
- getVal: function () {
- var val;
- if (this.select) {
- val = this.select.val();
- return val === null ? [] : val;
- } else {
- val = this.opts.element.val();
- return splitVal(val, this.opts.separator);
- }
- },
-
- // multi
- setVal: function (val) {
- var unique;
- if (this.select) {
- this.select.val(val);
- } else {
- unique = [];
- // filter out duplicates
- $(val).each(function () {
- if (indexOf(this, unique) < 0) unique.push(this);
- });
- this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
- }
- },
-
- // multi
- buildChangeDetails: function (old, current) {
- var current = current.slice(0),
- old = old.slice(0);
-
- // remove intersection from each array
- for (var i = 0; i < current.length; i++) {
- for (var j = 0; j < old.length; j++) {
- if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {
- current.splice(i, 1);
- if(i>0){
- i--;
- }
- old.splice(j, 1);
- j--;
- }
- }
- }
-
- return {added: current, removed: old};
- },
-
-
- // multi
- val: function (val, triggerChange) {
- var oldData, self=this;
-
- if (arguments.length === 0) {
- return this.getVal();
- }
-
- oldData=this.data();
- if (!oldData.length) oldData=[];
-
- // val is an id. !val is true for [undefined,null,'',0] - 0 is legal
- if (!val && val !== 0) {
- this.opts.element.val("");
- this.updateSelection([]);
- this.clearSearch();
- if (triggerChange) {
- this.triggerChange({added: this.data(), removed: oldData});
- }
- return;
- }
-
- // val is a list of ids
- this.setVal(val);
-
- if (this.select) {
- this.opts.initSelection(this.select, this.bind(this.updateSelection));
- if (triggerChange) {
- this.triggerChange(this.buildChangeDetails(oldData, this.data()));
- }
- } else {
- if (this.opts.initSelection === undefined) {
- throw new Error("val() cannot be called if initSelection() is not defined");
- }
-
- this.opts.initSelection(this.opts.element, function(data){
- var ids=$.map(data, self.id);
- self.setVal(ids);
- self.updateSelection(data);
- self.clearSearch();
- if (triggerChange) {
- self.triggerChange(self.buildChangeDetails(oldData, self.data()));
- }
- });
- }
- this.clearSearch();
- },
-
- // multi
- onSortStart: function() {
- if (this.select) {
- throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");
- }
-
- // collapse search field into 0 width so its container can be collapsed as well
- this.search.width(0);
- // hide the container
- this.searchContainer.hide();
- },
-
- // multi
- onSortEnd:function() {
-
- var val=[], self=this;
-
- // show search and move it to the end of the list
- this.searchContainer.show();
- // make sure the search container is the last item in the list
- this.searchContainer.appendTo(this.searchContainer.parent());
- // since we collapsed the width in dragStarted, we resize it here
- this.resizeSearch();
-
- // update selection
- this.selection.find(".select2-search-choice").each(function() {
- val.push(self.opts.id($(this).data("select2-data")));
- });
- this.setVal(val);
- this.triggerChange();
- },
-
- // multi
- data: function(values, triggerChange) {
- var self=this, ids, old;
- if (arguments.length === 0) {
- return this.selection
- .children(".select2-search-choice")
- .map(function() { return $(this).data("select2-data"); })
- .get();
- } else {
- old = this.data();
- if (!values) { values = []; }
- ids = $.map(values, function(e) { return self.opts.id(e); });
- this.setVal(ids);
- this.updateSelection(values);
- this.clearSearch();
- if (triggerChange) {
- this.triggerChange(this.buildChangeDetails(old, this.data()));
- }
- }
- }
- });
-
- $.fn.select2 = function () {
-
- var args = Array.prototype.slice.call(arguments, 0),
- opts,
- select2,
- method, value, multiple,
- allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"],
- valueMethods = ["opened", "isFocused", "container", "dropdown"],
- propertyMethods = ["val", "data"],
- methodsMap = { search: "externalSearch" };
-
- this.each(function () {
- if (args.length === 0 || typeof(args[0]) === "object") {
- opts = args.length === 0 ? {} : $.extend({}, args[0]);
- opts.element = $(this);
-
- if (opts.element.get(0).tagName.toLowerCase() === "select") {
- multiple = opts.element.prop("multiple");
- } else {
- multiple = opts.multiple || false;
- if ("tags" in opts) {opts.multiple = multiple = true;}
- }
-
- select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single();
- select2.init(opts);
- } else if (typeof(args[0]) === "string") {
-
- if (indexOf(args[0], allowedMethods) < 0) {
- throw "Unknown method: " + args[0];
- }
-
- value = undefined;
- select2 = $(this).data("select2");
- if (select2 === undefined) return;
-
- method=args[0];
-
- if (method === "container") {
- value = select2.container;
- } else if (method === "dropdown") {
- value = select2.dropdown;
- } else {
- if (methodsMap[method]) method = methodsMap[method];
-
- value = select2[method].apply(select2, args.slice(1));
- }
- if (indexOf(args[0], valueMethods) >= 0
- || (indexOf(args[0], propertyMethods) && args.length == 1)) {
- return false; // abort the iteration, ready to return first matched value
- }
- } else {
- throw "Invalid arguments to select2 plugin: " + args;
- }
- });
- return (value === undefined) ? this : value;
- };
-
- // plugin defaults, accessible to users
- $.fn.select2.defaults = {
- width: "copy",
- loadMorePadding: 0,
- closeOnSelect: true,
- openOnEnter: true,
- containerCss: {},
- dropdownCss: {},
- containerCssClass: "",
- dropdownCssClass: "",
- formatResult: function(result, container, query, escapeMarkup) {
- var markup=[];
- markMatch(result.text, query.term, markup, escapeMarkup);
- return markup.join("");
- },
- formatSelection: function (data, container, escapeMarkup) {
- return data ? escapeMarkup(data.text) : undefined;
- },
- sortResults: function (results, container, query) {
- return results;
- },
- formatResultCssClass: function(data) {return data.css;},
- formatSelectionCssClass: function(data, container) {return undefined;},
- formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; },
- formatNoMatches: function () { return "No matches found"; },
- formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1? "" : "s"); },
- formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); },
- formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
- formatLoadMore: function (pageNumber) { return "Loading more results…"; },
- formatSearching: function () { return "Searching…"; },
- minimumResultsForSearch: 0,
- minimumInputLength: 0,
- maximumInputLength: null,
- maximumSelectionSize: 0,
- id: function (e) { return e == undefined ? null : e.id; },
- matcher: function(term, text) {
- return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;
- },
- separator: ",",
- tokenSeparators: [],
- tokenizer: defaultTokenizer,
- escapeMarkup: defaultEscapeMarkup,
- blurOnChange: false,
- selectOnBlur: false,
- adaptContainerCssClass: function(c) { return c; },
- adaptDropdownCssClass: function(c) { return null; },
- nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },
- hideSelectionFromResult: function(selectedObject) { return undefined; },
- searchInputPlaceholder: '',
- createSearchChoicePosition: 'top'
- };
-
- $.fn.select2.ajaxDefaults = {
- transport: $.ajax,
- params: {
- type: "GET",
- cache: false,
- dataType: "json"
- }
- };
-
- // exports
- window.Select2 = {
- query: {
- ajax: ajax,
- local: local,
- tags: tags
- }, util: {
- debounce: debounce,
- markMatch: markMatch,
- escapeMarkup: defaultEscapeMarkup,
- stripDiacritics: stripDiacritics
- }, "class": {
- "abstract": AbstractSelect2,
- "single": SingleSelect2,
- "multi": MultiSelect2
- }
- };
-
-}(jQuery));
diff --git a/SemanticForms/phpunit.xml.dist b/SemanticForms/phpunit.xml.dist
deleted file mode 100644
index bd002431..00000000
--- a/SemanticForms/phpunit.xml.dist
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phpunit backupGlobals="false"
- backupStaticAttributes="false"
- bootstrap="tests/bootstrap.php"
- cacheTokens="false"
- colors="true"
- convertErrorsToExceptions="true"
- convertNoticesToExceptions="true"
- convertWarningsToExceptions="true"
- stopOnError="false"
- stopOnFailure="false"
- stopOnIncomplete="false"
- stopOnSkipped="false"
- strict="true"
- verbose="true">
- <testsuites>
- <testsuite name="extension-semantic-forms">
- <directory>tests/phpunit/includes</directory>
- </testsuite>
- </testsuites>
- <filter>
- <whitelist addUncoveredFilesFromWhitelist="true">
- <directory suffix=".php">includes</directory>
- </whitelist>
- </filter>
-</phpunit>
diff --git a/SemanticForms/skins/MW-Icon-AlertMark.png b/SemanticForms/skins/MW-Icon-AlertMark.png
deleted file mode 100644
index b989d94c..00000000
--- a/SemanticForms/skins/MW-Icon-AlertMark.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_add_above.png b/SemanticForms/skins/SF_add_above.png
deleted file mode 100644
index 9e108201..00000000
--- a/SemanticForms/skins/SF_add_above.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_add_above_active.png b/SemanticForms/skins/SF_add_above_active.png
deleted file mode 100644
index 6ab99699..00000000
--- a/SemanticForms/skins/SF_add_above_active.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_add_above_hover.png b/SemanticForms/skins/SF_add_above_hover.png
deleted file mode 100644
index 86c8a727..00000000
--- a/SemanticForms/skins/SF_add_above_hover.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_autoedit.css b/SemanticForms/skins/SF_autoedit.css
deleted file mode 100644
index 7c066e3a..00000000
--- a/SemanticForms/skins/SF_autoedit.css
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-*/
-
-.autoedit {
- display: inline;
-}
-
-.autoedit-trigger {
- cursor: pointer;
-}
-
-.autoedit-trigger-wait {
- margin-right: 1em;
- cursor: pointer;
-}
-
-.autoedit-trigger-error {
- display: none;
-}
-
-.autoedit-trigger-ok {
- display: none;
-}
-
-.autoedit-result {
-
-}
-
-.autoedit-result > p:first-child {
- display:inline;
-}
-
-.autoedit-result-wait {
- color: #555;
- cursor: progress;
-}
-
-.autoedit-result-error {
- color: #a00;
-}
-
-.autoedit-result-ok {
- color: #0a0;
-}
-
-.autoedit-data {
- display: none;
-}
diff --git a/SemanticForms/skins/SF_checkboxes.css b/SemanticForms/skins/SF_checkboxes.css
deleted file mode 100644
index a7c38f16..00000000
--- a/SemanticForms/skins/SF_checkboxes.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.checkboxSwitches {
- display: block;
- font-size: small;
-}
-
-.checkboxSwitch::before {
- content: "[ ";
-}
-
-.checkboxSwitch::after {
- content: " ]";
-}
diff --git a/SemanticForms/skins/SF_collapsible.css b/SemanticForms/skins/SF_collapsible.css
deleted file mode 100644
index 39c12b4b..00000000
--- a/SemanticForms/skins/SF_collapsible.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.sfCollapsibleFieldset legend {
- cursor: pointer;
- padding-left: 20px;
-}
-
-.sfCollapsedFieldset legend {
- background: transparent url(collapse-plus.png) no-repeat center left;
-}
-
-.sfExpandedFieldset legend {
- background: transparent url(collapse-minus.png) no-repeat center left;
-}
diff --git a/SemanticForms/skins/SF_jquery_ui_overrides.css b/SemanticForms/skins/SF_jquery_ui_overrides.css
deleted file mode 100644
index f178cf3d..00000000
--- a/SemanticForms/skins/SF_jquery_ui_overrides.css
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Overrides of the CSS for the jQuery UI libraries, for use by Semantic Forms
- */
-.ui-widget input, .ui-widget {
- font-family: sans-serif;
- font-size: 10pt;
-}
-
-.ui-widget input.ui-widget-content {
- padding-left: 0.2em;
- margin: 0 0 0 .1em;
-}
-
-.ui-menu-item .ui-state-hover {
- background: #222288;
- color: white;
- border: none;
-}
-ul.ui-menu {
- padding: 0 0 5px 0;
- max-height: 200px;
- overflow: auto;
-}
-.ui-menu .ui-menu-item a.ui-state-hover {
- margin: auto;
-}
-
-.ui-corner-left, .ui-corner-right, .ui-corner-all {
- border-radius: 0;
- -moz-border-radius: 0;
- -webkit-border-radius: 0;
-}
-
-/*
-button.ui-button-icon-only {
- vertical-align: auto;
-}
-*/
-
diff --git a/SemanticForms/skins/SF_popupform.css b/SemanticForms/skins/SF_popupform.css
deleted file mode 100644
index 3eb62bf4..00000000
--- a/SemanticForms/skins/SF_popupform.css
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Styles for popup forms
- */
-
-.popupformlink, .popupforminput {
- display: inline;
-}
-
-div.popupform-wrapper {
- position: fixed;
- left: 0;
- top: 0;
- height: 100%;
- width: 100%;
-}
-
-div.popupform-background {
- left: 0;
- top: 0;
- height: 100%;
- width: 100%;
- background: black;
-
-}
-
-div.popupform-anchor {
- position: fixed;
- left: 50%;
- top: 50%;
- width: 0;
- height: 0;
-}
-
-div.popupform-container {
- position: absolute;
- background-color: white;
- border: 2px solid #00a;
-}
-
-div.popupform-innercontainer {
- width: 100%;
- height: 100%;
- border: none;
- background: transparent;
-}
-
-iframe.popupform-innerdocument {
- width: 100%;
- height: 100%;
- border: none;
- background: transparent;
- overflow: hidden;
-}
-
-div.popupform-close {
- position: absolute;
- right: -25px;
- top: -25px;
- width: 30px;
- height: 30px;
- cursor: pointer;
- background-image: url('../skins/fancy_close.png');
-}
-
-div.popupform-loading {
- position: fixed;
- left: 50%;
- top: 50%;
-}
-
-div.popupform-loadingbg {
- position: absolute;
- left: -64px;
- top: -64px;
- width: 128px;
- height: 128px;
- background-color: transparent;
- background-image: url('../skins/loadingbg.png');
-}
-
-div.popupform-loadingfg {
- position: absolute;
- left: -16px;
- top: -16px;
- width: 32px;
- height: 32px;
- background-color: transparent;
- background-image: url('../skins/loading.gif');
-}
diff --git a/SemanticForms/skins/SF_remove.png b/SemanticForms/skins/SF_remove.png
deleted file mode 100644
index bedd074a..00000000
--- a/SemanticForms/skins/SF_remove.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_remove_active.png b/SemanticForms/skins/SF_remove_active.png
deleted file mode 100644
index 9965a628..00000000
--- a/SemanticForms/skins/SF_remove_active.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_remove_hover.png b/SemanticForms/skins/SF_remove_hover.png
deleted file mode 100644
index 5bc81b0f..00000000
--- a/SemanticForms/skins/SF_remove_hover.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/SF_submit.css b/SemanticForms/skins/SF_submit.css
deleted file mode 100644
index 5d4f3afa..00000000
--- a/SemanticForms/skins/SF_submit.css
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
-* Style sheet for the save-and-continue button
-*
-* The order of the rules is actually important!
-* There might be several classes set at the same time.
-*/
-
-.sf-save_and_continue {
- background-color: inherit;
-}
-
-.sf-save_and_continue-ok {
- background-color: #afa;
-}
-
-.sf-save_and_continue-error {
- background-color: #f35;
-}
-
-.sf-save_and_continue-wait {
- background-color: transparent;
-}
-
-.sf-save_and_continue-changed {
- background-color: #ff0;
-}
diff --git a/SemanticForms/skins/SF_wikieditor.css b/SemanticForms/skins/SF_wikieditor.css
deleted file mode 100644
index 2854ba3d..00000000
--- a/SemanticForms/skins/SF_wikieditor.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
-* Style sheet for the wikieditor
-*/
-
-textarea.wikieditor {
- border: none;
- padding: 0;
- line-height: 1.5em;
-} \ No newline at end of file
diff --git a/SemanticForms/skins/SemanticForms.css b/SemanticForms/skins/SemanticForms.css
deleted file mode 100644
index da3878f9..00000000
--- a/SemanticForms/skins/SemanticForms.css
+++ /dev/null
@@ -1,166 +0,0 @@
-/**
- * The main CSS file for the Semantic Forms extension.
- */
-
-/* Override "width: 100%" setting in standard MediaWiki skins */
-textarea.createboxInput {
-/* width: auto;*/
-}
-textarea.mandatoryField {
- width: auto;
-}
-
-/* Used in 'create template' page */
-.fieldBox {
- border: 1px black solid;
- background: #dddddd;
- padding: 10px 20px 10px 20px;
- margin: 0 20px 20px 20px;
-}
-
-/* Used in 'create form' page */
-.templateForm {
- border: 1px black solid;
- background: #dddddd;
- padding: 0 20px 10px 20px;
- margin-bottom: 20px;
-}
-
-/* Used in 'create form' page */
-.sectionForm {
- border: 1px black solid;
- background: #d0dae6;
- padding: 0 20px 10px 20px;
- margin-bottom: 20px;
-}
-
-/* Used in form pages */
-table.formtable {
- /* width: 100%; */
-}
-
-table.formtable th {
- text-align: left;
- vertical-align: top;
- /* max-width: 150px; */
-}
-/* another possible layout */
-table.formtable2 {
- width: 100%;
- margin: 5px 0 0;
- padding: 0.3em 0.2em 0.2em 0.2em;
- background: transparent;
- border-collapse: collapse;
-}
-table.formtable2 th, table.formtable2 td {
- vertical-align: top;
-}
-/* this makes sure that in long lists with checkboxes the checkbox and the
-corresponding label are not torn apart by a line break */
-span.checkboxSpan {
- /* 'nowrap' doesn't work in IE, unfortunately */
- /* white-space: nowrap; */
- float: left;
- padding-right: 9px;
-}
-/* the "remove" and "add another" buttons used for multiple templates */
-input.remove, input.addanother {
-}
-/* this selects text and dropdown list inputs that have been set to
-mandatory */
-input.mandatoryField, select.mandatoryField {
- /* (suggested formatting) */
- /* border: 1px #d72227 solid; */
-}
-/* a span around radiobuttons and checkboxes that are set to mandatory,
-since some browsers don't support formatting of these elements, and a
-span around a set of them looks nicer anyway */
-span.mandatoryFieldsSpan {
- /* (suggested formatting) */
- /* border: 1px #d72227 solid;
- padding: 4px; */
-}
-
-div.infoMessage {
- border: 1px solid #777777;
- padding: 12px;
- margin: 25px;
- width: auto;
- background: #eeeeee;
-}
-
-span.errorMessage {
- color: red;
-}
-.multipleTemplateInstance {
- background-color: #dddddd;
- border: 1px solid #cccccc;
- padding: 5px;
- margin: 10px 0 10px 0;
-}
-
-.multipleTemplateInstance table {
- width: 100%;
- padding: 0;
- margin: 0;
- color: inherit;
- background-color: inherit;
-}
-
-a.addAboveButton {
- display: block;
- width: 34px;
- height: 34px;
- background-image: url('SF_add_above.png');
-}
-
-a.addAboveButton:hover {
- background-image: url('SF_add_above_hover.png');
-}
-
-a.addAboveButton:active {
- background-image: url('SF_add_above_active.png');
-}
-
-a.removeButton {
- display: block;
- width: 34px;
- height: 34px;
- background-image: url('SF_remove.png');
-}
-
-a.removeButton:hover {
- background-image: url('SF_remove_hover.png');
-}
-
-a.removeButton:active {
- background-image: url('SF_remove_active.png');
-}
-
-td.instanceRearranger {
- max-width: 15px;
-}
-
-img.rearrangerImage {
- cursor: move;
-}
-
-.autoGrow {
- overflow: hidden;
- height: auto;
-/* width: 326px;*/
-}
-
-/* Override some jQuery UI settings */
-.ui-button { margin-left: -1px; }
-.ui-button-icon-only .ui-button-text { padding: 0.35em; }
-button.ui-button-icon-only {
- width: 1.7em;
- height: 1.5em;
- vertical-align: bottom;
- margin-top: 0.2em;
-} /* button elements seem to need a little more width */
-/* Override CSS from Header Tabs extension, if tabs are used in the form */
-input.sfComboBoxActual {
- border: 1px solid #a6a6a6;
-}
diff --git a/SemanticForms/skins/close.png b/SemanticForms/skins/close.png
deleted file mode 100644
index 2ef53b32..00000000
--- a/SemanticForms/skins/close.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/collapse-minus.png b/SemanticForms/skins/collapse-minus.png
deleted file mode 100644
index 23bfc438..00000000
--- a/SemanticForms/skins/collapse-minus.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/collapse-plus.png b/SemanticForms/skins/collapse-plus.png
deleted file mode 100644
index 59febf21..00000000
--- a/SemanticForms/skins/collapse-plus.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/dyntree-loading.gif b/SemanticForms/skins/dyntree-loading.gif
deleted file mode 100644
index 251df054..00000000
--- a/SemanticForms/skins/dyntree-loading.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/ext.sf.select2.css b/SemanticForms/skins/ext.sf.select2.css
deleted file mode 100644
index 3d8f0927..00000000
--- a/SemanticForms/skins/ext.sf.select2.css
+++ /dev/null
@@ -1,63 +0,0 @@
-/*Overriding some select2 classes for customization*/
-.sf-select2-dropdown .select2-results .select2-result .select2-result-label .select2-match {
- text-decoration: none;
- font-weight: bold;
-}
-
-.sf-select2-dropdown .select2-results .select2-highlighted {
- background-color: #0645ad;
-}
-
-.sf-select2-dropdown .select2-search input {
- font-size: 14px;
-}
-
-.sf-select2-dropdown .select2-results {
- font-size: 14px;
-}
-
-.sf-select2-container {
- margin-bottom: 6px;
-}
-
-.sf-icon {
- width:15px;
- height: 10px;
- padding-right: 5px;
-}
-
-.sf-select2-result td{
- vertical-align: top;
- max-height: 300px;
-}
-
-.sf-result-thumbnail {
- width: 120px;
-}
-
-.sf-result-thumbnail img{
- height: 90px;
- width: 120px;
- vertical-align: middle;
-}
-
-.sf-result-info {
- padding-left: 10px;
- vertical-align: top;
-}
-
-.sf-result-title {
- font-size: 1.2em;
- padding-bottom: 10px;
-}
-
-.sf-result-description {
- font-size: .8em;
- color: #888;
- text-align: justify;
- max-height: 300px;
-}
-.select2-highlighted .sf-result-description {
- font-size: .8em;
- color: #eee;
-} \ No newline at end of file
diff --git a/SemanticForms/skins/fancy_close.png b/SemanticForms/skins/fancy_close.png
deleted file mode 100644
index a80440ff..00000000
--- a/SemanticForms/skins/fancy_close.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/fancybox-x.png b/SemanticForms/skins/fancybox-x.png
deleted file mode 100644
index 718efb41..00000000
--- a/SemanticForms/skins/fancybox-x.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/fancybox-y.png b/SemanticForms/skins/fancybox-y.png
deleted file mode 100644
index 23ec8700..00000000
--- a/SemanticForms/skins/fancybox-y.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/fancybox.png b/SemanticForms/skins/fancybox.png
deleted file mode 100644
index 99971629..00000000
--- a/SemanticForms/skins/fancybox.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/icons-rtl.gif b/SemanticForms/skins/icons-rtl.gif
deleted file mode 100644
index a29b5fbc..00000000
--- a/SemanticForms/skins/icons-rtl.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/icons.gif b/SemanticForms/skins/icons.gif
deleted file mode 100644
index a58eb93f..00000000
--- a/SemanticForms/skins/icons.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/jquery.fancybox.css b/SemanticForms/skins/jquery.fancybox.css
deleted file mode 100644
index 571dfee3..00000000
--- a/SemanticForms/skins/jquery.fancybox.css
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-#fancybox-loading {
- position: fixed;
- top: 50%;
- left: 50%;
- width: 40px;
- height: 40px;
- margin-top: -20px;
- margin-left: -20px;
- cursor: pointer;
- overflow: hidden;
- z-index: 1104;
- display: none;
-}
-
-#fancybox-loading div {
- position: absolute;
- top: 0;
- left: 0;
- width: 40px;
- height: 480px;
- background-image: url('fancybox.png');
-}
-
-#fancybox-overlay {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: 1100;
- display: none;
-}
-
-#fancybox-tmp {
- padding: 0;
- margin: 0;
- border: 0;
- overflow: auto;
- display: none;
-}
-
-#fancybox-wrap {
- position: absolute;
- top: 0;
- left: 0;
- padding: 20px;
- z-index: 1101;
- outline: none;
- display: none;
-}
-
-#fancybox-outer {
- position: relative;
- width: 100%;
- height: 100%;
- background: #fff;
-}
-
-#fancybox-content {
- width: 0;
- height: 0;
- padding: 0;
- outline: none;
- position: relative;
- overflow: hidden;
- z-index: 1102;
- border: 0 solid #fff;
-}
-
-#fancybox-hide-sel-frame {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: transparent;
- z-index: 1101;
-}
-
-#fancybox-close {
- position: absolute;
- top: -15px;
- right: -15px;
- width: 30px;
- height: 30px;
- background: transparent url('fancybox.png') -40px 0;
- cursor: pointer;
- z-index: 1103;
- display: none;
-}
-
-#fancybox-error {
- color: #444;
- font: normal 12px/20px Arial;
- padding: 14px;
- margin: 0;
-}
-
-#fancybox-img {
- width: 100%;
- height: 100%;
- padding: 0;
- margin: 0;
- border: none;
- outline: none;
- line-height: 0;
- vertical-align: top;
-}
-
-#fancybox-frame {
- width: 100%;
- height: 100%;
- border: none;
- display: block;
-}
-
-#fancybox-left, #fancybox-right {
- position: absolute;
- bottom: 0;
- height: 100%;
- width: 35%;
- cursor: pointer;
- outline: none;
- background: transparent url('blank.gif');
- z-index: 1102;
- display: none;
-}
-
-#fancybox-left {
- left: 0;
-}
-
-#fancybox-right {
- right: 0;
-}
-
-#fancybox-left-ico, #fancybox-right-ico {
- position: absolute;
- top: 50%;
- left: -9999px;
- width: 30px;
- height: 30px;
- margin-top: -15px;
- cursor: pointer;
- z-index: 1102;
- display: block;
-}
-
-#fancybox-left-ico {
- background-image: url('fancybox.png');
- background-position: -40px -30px;
-}
-
-#fancybox-right-ico {
- background-image: url('fancybox.png');
- background-position: -40px -60px;
-}
-
-#fancybox-left:hover, #fancybox-right:hover {
- visibility: visible; /* IE6 */
-}
-
-#fancybox-left:hover span {
- left: 20px;
-}
-
-#fancybox-right:hover span {
- left: auto;
- right: 20px;
-}
-
-.fancybox-bg {
- position: absolute;
- padding: 0;
- margin: 0;
- border: 0;
- width: 20px;
- height: 20px;
- z-index: 1001;
-}
-
-#fancybox-bg-n {
- top: -20px;
- left: 0;
- width: 100%;
- background-image: url('fancybox-x.png');
-}
-
-#fancybox-bg-ne {
- top: -20px;
- right: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -162px;
-}
-
-#fancybox-bg-e {
- top: 0;
- right: -20px;
- height: 100%;
- background-image: url('fancybox-y.png');
- background-position: -20px 0;
-}
-
-#fancybox-bg-se {
- bottom: -20px;
- right: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -182px;
-}
-
-#fancybox-bg-s {
- bottom: -20px;
- left: 0;
- width: 100%;
- background-image: url('fancybox-x.png');
- background-position: 0 -20px;
-}
-
-#fancybox-bg-sw {
- bottom: -20px;
- left: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -142px;
-}
-
-#fancybox-bg-w {
- top: 0;
- left: -20px;
- height: 100%;
- background-image: url('fancybox-y.png');
-}
-
-#fancybox-bg-nw {
- top: -20px;
- left: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -122px;
-}
-
-#fancybox-title {
- font-family: Helvetica;
- font-size: 12px;
- z-index: 1102;
-}
-
-.fancybox-title-inside {
- padding-bottom: 10px;
- text-align: center;
- color: #333;
- background: #fff;
- position: relative;
-}
-
-.fancybox-title-outside {
- padding-top: 10px;
- color: #fff;
-}
-
-.fancybox-title-over {
- position: absolute;
- bottom: 0;
- left: 0;
- color: #FFF;
- text-align: left;
-}
-
-#fancybox-title-over {
- padding: 10px;
- background-image: url('fancy_title_over.png');
- display: block;
-}
-
-.fancybox-title-float {
- position: absolute;
- left: 0;
- bottom: -20px;
- height: 32px;
-}
-
-#fancybox-title-float-wrap {
- border: none;
- border-collapse: collapse;
- width: auto;
-}
-
-#fancybox-title-float-wrap td {
- border: none;
- white-space: nowrap;
-}
-
-#fancybox-title-float-left {
- padding: 0 0 0 15px;
- background: url('fancybox.png') -40px -90px no-repeat;
-}
-
-#fancybox-title-float-main {
- color: #FFF;
- line-height: 29px;
- font-weight: bold;
- padding: 0 0 3px 0;
- background: url('fancybox-x.png') 0 -40px;
-}
-
-#fancybox-title-float-right {
- padding: 0 0 0 15px;
- background: url('fancybox.png') -55px -90px no-repeat;
-}
-
-/* IE6 */
-
-.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
-.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
- height: expression(this.parentNode.clientHeight + "px");
-}
-
-#fancybox-loading.fancybox-ie6 {
- position: absolute; margin-top: 0;
- top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
-}
-
-#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
-
-/* IE6, IE7, IE8 */
-
-.fancybox-ie .fancybox-bg { background: transparent !important; }
-
-.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
diff --git a/SemanticForms/skins/loading.gif b/SemanticForms/skins/loading.gif
deleted file mode 100644
index f864d5fd..00000000
--- a/SemanticForms/skins/loading.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/loadingbg.png b/SemanticForms/skins/loadingbg.png
deleted file mode 100644
index c01d0de6..00000000
--- a/SemanticForms/skins/loadingbg.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/rearranger.png b/SemanticForms/skins/rearranger.png
deleted file mode 100644
index b9ac255e..00000000
--- a/SemanticForms/skins/rearranger.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/select2/select2-bootstrap.css b/SemanticForms/skins/select2/select2-bootstrap.css
deleted file mode 100644
index 90997107..00000000
--- a/SemanticForms/skins/select2/select2-bootstrap.css
+++ /dev/null
@@ -1,87 +0,0 @@
-.form-control .select2-choice {
- border: 0;
- border-radius: 2px;
-}
-
-.form-control .select2-choice .select2-arrow {
- border-radius: 0 2px 2px 0;
-}
-
-.form-control.select2-container {
- height: auto !important;
- padding: 0px;
-}
-
-.form-control.select2-container.select2-dropdown-open {
- border-color: #5897FB;
- border-radius: 3px 3px 0 0;
-}
-
-.form-control .select2-container.select2-dropdown-open .select2-choices {
- border-radius: 3px 3px 0 0;
-}
-
-.form-control.select2-container .select2-choices {
- border: 0 !important;
- border-radius: 3px;
-}
-
-.control-group.warning .select2-container .select2-choice,
-.control-group.warning .select2-container .select2-choices,
-.control-group.warning .select2-container-active .select2-choice,
-.control-group.warning .select2-container-active .select2-choices,
-.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.warning .select2-container-multi.select2-container-active .select2-choices {
- border: 1px solid #C09853 !important;
-}
-
-.control-group.warning .select2-container .select2-choice div {
- border-left: 1px solid #C09853 !important;
- background: #FCF8E3 !important;
-}
-
-.control-group.error .select2-container .select2-choice,
-.control-group.error .select2-container .select2-choices,
-.control-group.error .select2-container-active .select2-choice,
-.control-group.error .select2-container-active .select2-choices,
-.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.error .select2-container-multi.select2-container-active .select2-choices {
- border: 1px solid #B94A48 !important;
-}
-
-.control-group.error .select2-container .select2-choice div {
- border-left: 1px solid #B94A48 !important;
- background: #F2DEDE !important;
-}
-
-.control-group.info .select2-container .select2-choice,
-.control-group.info .select2-container .select2-choices,
-.control-group.info .select2-container-active .select2-choice,
-.control-group.info .select2-container-active .select2-choices,
-.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.info .select2-container-multi.select2-container-active .select2-choices {
- border: 1px solid #3A87AD !important;
-}
-
-.control-group.info .select2-container .select2-choice div {
- border-left: 1px solid #3A87AD !important;
- background: #D9EDF7 !important;
-}
-
-.control-group.success .select2-container .select2-choice,
-.control-group.success .select2-container .select2-choices,
-.control-group.success .select2-container-active .select2-choice,
-.control-group.success .select2-container-active .select2-choices,
-.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,
-.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,
-.control-group.success .select2-container-multi.select2-container-active .select2-choices {
- border: 1px solid #468847 !important;
-}
-
-.control-group.success .select2-container .select2-choice div {
- border-left: 1px solid #468847 !important;
- background: #DFF0D8 !important;
-}
diff --git a/SemanticForms/skins/select2/select2-spinner.gif b/SemanticForms/skins/select2/select2-spinner.gif
deleted file mode 100644
index 5b33f7e5..00000000
--- a/SemanticForms/skins/select2/select2-spinner.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/select2/select2.css b/SemanticForms/skins/select2/select2.css
deleted file mode 100644
index bc85a752..00000000
--- a/SemanticForms/skins/select2/select2.css
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
-Version: @@ver@@ Timestamp: @@timestamp@@
-*/
-.select2-container {
- margin: 0;
- position: relative;
- display: inline-block;
- /* inline-block for ie7 */
- zoom: 1;
- *display: inline;
- vertical-align: middle;
-}
-
-.select2-container,
-.select2-drop,
-.select2-search,
-.select2-search input {
- /*
- Force border-box so that % widths fit the parent
- container without overlap because of margin/padding.
- More Info : http://www.quirksmode.org/css/box.html
- */
- -webkit-box-sizing: border-box; /* webkit */
- -moz-box-sizing: border-box; /* firefox */
- box-sizing: border-box; /* css3 */
-}
-
-.select2-container .select2-choice {
- display: block;
- height: 26px;
- padding: 0 0 0 8px;
- overflow: hidden;
- position: relative;
-
- border: 1px solid #aaa;
- white-space: nowrap;
- line-height: 26px;
- color: #444;
- text-decoration: none;
-
- border-radius: 4px;
-
- background-clip: padding-box;
-
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-
- background-color: #fff;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
- background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
- background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
- background-image: linear-gradient(to top, #eee 0%, #fff 50%);
-}
-
-.select2-container.select2-drop-above .select2-choice {
- border-bottom-color: #aaa;
-
- border-radius: 0 0 4px 4px;
-
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));
- background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);
- background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
- background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);
-}
-
-.select2-container.select2-allowclear .select2-choice .select2-chosen {
- margin-right: 42px;
-}
-
-.select2-container .select2-choice > .select2-chosen {
- margin-right: 26px;
- display: block;
- overflow: hidden;
-
- white-space: nowrap;
-
- text-overflow: ellipsis;
-}
-
-.select2-container .select2-choice abbr {
- display: none;
- width: 12px;
- height: 12px;
- position: absolute;
- right: 24px;
- top: 8px;
-
- font-size: 1px;
- text-decoration: none;
-
- border: 0;
- background: url('select2.png') right top no-repeat;
- cursor: pointer;
- outline: 0;
-}
-
-.select2-container.select2-allowclear .select2-choice abbr {
- display: inline-block;
-}
-
-.select2-container .select2-choice abbr:hover {
- background-position: right -11px;
- cursor: pointer;
-}
-
-.select2-drop-mask {
- border: 0;
- margin: 0;
- padding: 0;
- position: fixed;
- left: 0;
- top: 0;
- min-height: 100%;
- min-width: 100%;
- height: auto;
- width: auto;
- opacity: 0;
- z-index: 9998;
- /* styles required for IE to work */
- background-color: #fff;
- filter: alpha(opacity=0);
-}
-
-.select2-drop {
- width: 100%;
- margin-top: -1px;
- position: absolute;
- z-index: 9999;
- top: 100%;
-
- background: #fff;
- color: #000;
- border: 1px solid #aaa;
- border-top: 0;
-
- border-radius: 0 0 4px 4px;
-
- -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
- box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
-}
-
-.select2-drop.select2-drop-above {
- margin-top: 1px;
- border-top: 1px solid #aaa;
- border-bottom: 0;
-
- border-radius: 4px 4px 0 0;
-
- -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
- box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
-}
-
-.select2-drop-active {
- border: 1px solid #5897fb;
- border-top: none;
-}
-
-.select2-drop.select2-drop-above.select2-drop-active {
- border-top: 1px solid #5897fb;
-}
-
-.select2-drop-auto-width {
- border-top: 1px solid #aaa;
- width: auto;
-}
-
-.select2-drop-auto-width .select2-search {
- padding-top: 4px;
-}
-
-.select2-container .select2-choice .select2-arrow {
- display: inline-block;
- width: 18px;
- height: 100%;
- position: absolute;
- right: 0;
- top: 0;
-
- border-left: 1px solid #aaa;
- border-radius: 0 4px 4px 0;
-
- background-clip: padding-box;
-
- background: #ccc;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
- background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
- background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
- background-image: linear-gradient(to top, #ccc 0%, #eee 60%);
-}
-
-.select2-container .select2-choice .select2-arrow b {
- display: block;
- width: 100%;
- height: 100%;
- background: url('select2.png') no-repeat 0 1px;
-}
-
-.select2-search {
- display: inline-block;
- width: 100%;
- min-height: 26px;
- margin: 0;
- padding-left: 4px;
- padding-right: 4px;
-
- position: relative;
- z-index: 10000;
-
- white-space: nowrap;
-}
-
-.select2-search input {
- width: 100%;
- height: auto !important;
- min-height: 26px;
- padding: 4px 20px 4px 5px;
- margin: 0;
-
- outline: 0;
- font-family: sans-serif;
- font-size: 1em;
-
- border: 1px solid #aaa;
- border-radius: 0;
-
- -webkit-box-shadow: none;
- box-shadow: none;
-
- background: #fff url('select2.png') no-repeat 100% -22px;
- background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
- background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
-}
-
-.select2-drop.select2-drop-above .select2-search input {
- margin-top: 4px;
-}
-
-.select2-search input.select2-active {
- background: #fff url('select2-spinner.gif') no-repeat 100%;
- background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
- background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
- background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
-}
-
-.select2-container-active .select2-choice,
-.select2-container-active .select2-choices {
- border: 1px solid #5897fb;
- outline: none;
-
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
-}
-
-.select2-dropdown-open .select2-choice {
- border-bottom-color: transparent;
- -webkit-box-shadow: 0 1px 0 #fff inset;
- box-shadow: 0 1px 0 #fff inset;
-
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
-
- background-color: #eee;
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
- background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
- background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
- background-image: linear-gradient(to top, #fff 0%, #eee 50%);
-}
-
-.select2-dropdown-open.select2-drop-above .select2-choice,
-.select2-dropdown-open.select2-drop-above .select2-choices {
- border: 1px solid #5897fb;
- border-top-color: transparent;
-
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
- background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
- background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
- background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);
-}
-
-.select2-dropdown-open .select2-choice .select2-arrow {
- background: transparent;
- border-left: none;
- filter: none;
-}
-.select2-dropdown-open .select2-choice .select2-arrow b {
- background-position: -18px 1px;
-}
-
-.select2-hidden-accessible {
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
-}
-
-/* results */
-.select2-results {
- max-height: 200px;
- padding: 0 0 0 4px;
- margin: 4px 4px 4px 0;
- position: relative;
- overflow-x: hidden;
- overflow-y: auto;
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-
-.select2-results ul.select2-result-sub {
- margin: 0;
- padding-left: 0;
-}
-
-.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
-.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
-.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
-
-.select2-results li {
- list-style: none;
- display: list-item;
- background-image: none;
-}
-
-.select2-results li.select2-result-with-children > .select2-result-label {
- font-weight: bold;
-}
-
-.select2-results .select2-result-label {
- padding: 3px 7px 4px;
- margin: 0;
- cursor: pointer;
-
- min-height: 1em;
-
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.select2-results .select2-highlighted {
- background: #3875d7;
- color: #fff;
-}
-
-.select2-results li em {
- background: #feffde;
- font-style: normal;
-}
-
-.select2-results .select2-highlighted em {
- background: transparent;
-}
-
-.select2-results .select2-highlighted ul {
- background: #fff;
- color: #000;
-}
-
-
-.select2-results .select2-no-results,
-.select2-results .select2-searching,
-.select2-results .select2-selection-limit {
- background: #f4f4f4;
- display: list-item;
- padding-left: 5px;
-}
-
-/*
-disabled look for disabled choices in the results dropdown
-*/
-.select2-results .select2-disabled.select2-highlighted {
- color: #666;
- background: #f4f4f4;
- display: list-item;
- cursor: default;
-}
-.select2-results .select2-disabled {
- background: #f4f4f4;
- display: list-item;
- cursor: default;
-}
-
-.select2-results .select2-selected {
- display: none;
-}
-
-.select2-more-results.select2-active {
- background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
-}
-
-.select2-more-results {
- background: #f4f4f4;
- display: list-item;
-}
-
-/* disabled styles */
-
-.select2-container.select2-container-disabled .select2-choice {
- background-color: #f4f4f4;
- background-image: none;
- border: 1px solid #ddd;
- cursor: default;
-}
-
-.select2-container.select2-container-disabled .select2-choice .select2-arrow {
- background-color: #f4f4f4;
- background-image: none;
- border-left: 0;
-}
-
-.select2-container.select2-container-disabled .select2-choice abbr {
- display: none;
-}
-
-
-/* multiselect */
-
-.select2-container-multi .select2-choices {
- height: auto !important;
- height: 1%;
- margin: 0;
- padding: 0;
- position: relative;
-
- border: 1px solid #aaa;
- cursor: text;
- overflow: hidden;
-
- background-color: #fff;
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
- background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
- background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
- background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);
-}
-
-.select2-locked {
- padding: 3px 5px 3px 5px !important;
-}
-
-.select2-container-multi .select2-choices {
- min-height: 26px;
-}
-
-.select2-container-multi.select2-container-active .select2-choices {
- border: 1px solid #5897fb;
- outline: none;
-
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
- box-shadow: 0 0 5px rgba(0, 0, 0, .3);
-}
-.select2-container-multi .select2-choices li {
- float: left;
- list-style: none;
-}
-html[dir="rtl"] .select2-container-multi .select2-choices li
-{
- float: right;
-}
-.select2-container-multi .select2-choices .select2-search-field {
- margin: 0;
- padding: 0;
- white-space: nowrap;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input {
- padding: 5px;
- margin: 1px 0;
-
- font-family: sans-serif;
- font-size: 100%;
- color: #666;
- outline: 0;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- background: transparent !important;
-}
-
-.select2-container-multi .select2-choices .select2-search-field input.select2-active {
- background: #fff url('select2-spinner.gif') no-repeat 100% !important;
-}
-
-.select2-default {
- color: #999 !important;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice {
- padding: 3px 5px 3px 18px;
- margin: 3px 0 3px 5px;
- position: relative;
-
- line-height: 13px;
- color: #333;
- cursor: default;
- border: 1px solid #aaaaaa;
-
- border-radius: 3px;
-
- -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
- box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
-
- background-clip: padding-box;
-
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-
- background-color: #e4e4e4;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));
- background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
- background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
- background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
-}
-html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice
-{
- margin-left: 0;
- margin-right: 5px;
-}
-.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
- cursor: default;
-}
-.select2-container-multi .select2-choices .select2-search-choice-focus {
- background: #d4d4d4;
-}
-
-.select2-search-choice-close {
- display: block;
- width: 12px;
- height: 13px;
- position: absolute;
- right: 3px;
- top: 4px;
-
- font-size: 1px;
- outline: none;
- background: url('select2.png') right top no-repeat;
-}
-html[dir="rtl"] .select2-search-choice-close {
- right: auto;
- left: 3px;
-}
-
-.select2-container-multi .select2-search-choice-close {
- left: 3px;
-}
-
-.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
- background-position: right -11px;
-}
-.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
- background-position: right -11px;
-}
-
-/* disabled styles */
-.select2-container-multi.select2-container-disabled .select2-choices {
- background-color: #f4f4f4;
- background-image: none;
- border: 1px solid #ddd;
- cursor: default;
-}
-
-.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
- padding: 3px 5px 3px 5px;
- border: 1px solid #ddd;
- background-image: none;
- background-color: #f4f4f4;
-}
-
-.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
- background: none;
-}
-/* end multiselect */
-
-
-.select2-result-selectable .select2-match,
-.select2-result-unselectable .select2-match {
- text-decoration: underline;
-}
-
-.select2-offscreen, .select2-offscreen:focus {
- clip: rect(0 0 0 0) !important;
- width: 1px !important;
- height: 1px !important;
- border: 0 !important;
- margin: 0 !important;
- padding: 0 !important;
- overflow: hidden !important;
- position: absolute !important;
- outline: 0 !important;
- left: 0px !important;
- top: 0px !important;
-}
-
-.select2-display-none {
- display: none;
-}
-
-.select2-measure-scrollbar {
- position: absolute;
- top: -10000px;
- left: -10000px;
- width: 100px;
- height: 100px;
- overflow: scroll;
-}
-
-/* Retina-ize icons */
-
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {
- .select2-search input,
- .select2-search-choice-close,
- .select2-container .select2-choice abbr,
- .select2-container .select2-choice .select2-arrow b {
- background-image: url('select2x2.png') !important;
- background-repeat: no-repeat !important;
- background-size: 60px 40px !important;
- }
-
- .select2-search input {
- background-position: 100% -21px !important;
- }
-}
diff --git a/SemanticForms/skins/select2/select2.png b/SemanticForms/skins/select2/select2.png
deleted file mode 100644
index 1d804ffb..00000000
--- a/SemanticForms/skins/select2/select2.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/select2/select2x2.png b/SemanticForms/skins/select2/select2x2.png
deleted file mode 100644
index 4bdd5c96..00000000
--- a/SemanticForms/skins/select2/select2x2.png
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/ui.dynatree.css b/SemanticForms/skins/ui.dynatree.css
deleted file mode 100644
index 13e48800..00000000
--- a/SemanticForms/skins/ui.dynatree.css
+++ /dev/null
@@ -1,450 +0,0 @@
-/*******************************************************************************
- * Tree container
- */
-ul.dynatree-container
-{
- font-family: tahoma, arial, helvetica;
- font-size: 10pt; /* font size should not be too big */
- white-space: nowrap;
- padding: 3px;
- margin: 0; /* issue 201 */
- background-color: white;
- border: 1px dotted gray;
- overflow: auto;
- height: 100%; /* issue 263 */
-}
-
-ul.dynatree-container ul
-{
- padding: 0 0 0 16px;
- margin: 0;
-}
-
-ul.dynatree-container li
-{
- list-style-image: none;
- list-style-position: outside;
- list-style-type: none;
- -moz-background-clip:border;
- -moz-background-inline-policy: continuous;
- -moz-background-origin: padding;
- background-attachment: scroll;
- background-color: transparent;
- background-repeat: repeat-y;
- background-image: url("vline.gif");
- background-position: 0 0;
- /*
- background-image: url("icons_96x256.gif");
- background-position: -80px -64px;
- */
- margin: 0;
- padding: 1px 0 0 0;
-}
-/* Suppress lines for last child node */
-ul.dynatree-container li.dynatree-lastsib
-{
- background-image: none;
-}
-/* Suppress lines if level is fixed expanded (option minExpandLevel) */
-ul.dynatree-no-connector > li
-{
- background-image: none;
-}
-
-/* Style, when control is disabled */
-.ui-dynatree-disabled ul.dynatree-container
-{
- opacity: 0.5;
-/* filter: alpha(opacity=50); /* Yields a css warning */
- background-color: silver;
-}
-
-/*******************************************************************************
- * Common icon definitions
- */
-span.dynatree-empty,
-span.dynatree-vline,
-span.dynatree-connector,
-span.dynatree-expander,
-span.dynatree-icon,
-span.dynatree-checkbox,
-span.dynatree-radio,
-span.dynatree-drag-helper-img,
-#dynatree-drop-marker
-{
- width: 16px;
- height: 16px;
-/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221 */
-/* -moz-box-align: start; /* issue 221 */
- display: inline-block; /* Required to make a span sizeable */
- vertical-align: top;
- background-repeat: no-repeat;
- background-position: left;
- background-image: url("icons.gif");
- background-position: 0 0;
-}
-
-/** Used by 'icon' node option: */
-ul.dynatree-container img
-{
- width: 16px;
- height: 16px;
- margin-left: 3px;
- vertical-align: top;
- border-style: none;
-}
-
-
-/*******************************************************************************
- * Lines and connectors
- */
-
-span.dynatree-connector
-{
- background-position: -16px -64px;
-}
-
-/*******************************************************************************
- * Expander icon
- * Note: IE6 doesn't correctly evaluate multiples class names,
- * so we create combined class names that can be used in the CSS.
- *
- * Prefix: dynatree-exp-
- * 1st character: 'e': expanded, 'c': collapsed
- * 2nd character (optional): 'd': lazy (Delayed)
- * 3rd character (optional): 'l': Last sibling
- */
-
-span.dynatree-expander
-{
- background-position: 0px -80px;
- cursor: pointer;
-}
-.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
-{
- background-position: 0px -96px;
-}
-.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
-{
- background-position: -64px -80px;
-}
-.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
-{
- background-position: -64px -96px;
-}
-.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
-.dynatree-exp-ed span.dynatree-expander /* Expanded, delayed, not last sibling */
-{
- background-position: -32px -80px;
-}
-.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
-.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
-{
- background-position: -32px -96px;
-}
-.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
-{
- background-position: 0 0;
- background-image: url("dyntree-loading.gif");
-}
-
-
-/*******************************************************************************
- * Checkbox icon
- */
-span.dynatree-checkbox
-{
- margin-left: 3px;
- background-position: 0px -32px;
-}
-span.dynatree-checkbox:hover
-{
- background-position: -16px -32px;
-}
-
-.dynatree-partsel span.dynatree-checkbox
-{
- background-position: -64px -32px;
-}
-.dynatree-partsel span.dynatree-checkbox:hover
-{
- background-position: -80px -32px;
-}
-
-.dynatree-selected span.dynatree-checkbox
-{
- background-position: -32px -32px;
-}
-.dynatree-selected span.dynatree-checkbox:hover
-{
- background-position: -48px -32px;
-}
-
-/*******************************************************************************
- * Radiobutton icon
- * This is a customization, that may be activated by overriding the 'checkbox'
- * class name as 'dynatree-radio' in the tree options.
- */
-span.dynatree-radio
-{
- margin-left: 3px;
- background-position: 0px -48px;
-}
-span.dynatree-radio:hover
-{
- background-position: -16px -48px;
-}
-
-.dynatree-partsel span.dynatree-radio
-{
- background-position: -64px -48px;
-}
-.dynatree-partsel span.dynatree-radio:hover
-{
- background-position: -80px -48px;
-}
-
-.dynatree-selected span.dynatree-radio
-{
- background-position: -32px -48px;
-}
-.dynatree-selected span.dynatree-radio:hover
-{
- background-position: -48px -48px;
-}
-
-/*******************************************************************************
- * Node type icon
- * Note: IE6 doesn't correctly evaluate multiples class names,
- * so we create combined class names that can be used in the CSS.
- *
- * Prefix: dynatree-ico-
- * 1st character: 'e': expanded, 'c': collapsed
- * 2nd character (optional): 'f': folder
- */
-
-span.dynatree-icon /* Default icon */
-{
- margin-left: 3px;
- background-position: 0px 0px;
-}
-
-.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
-{
- background-position: 0px -16px;
-}
-
-.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
-{
- background-position: -64px -16px;
-}
-
-/* Status node icons */
-
-.dynatree-statusnode-wait span.dynatree-icon
-{
- background-image: url("dyntree-loading.gif");
-}
-
-.dynatree-statusnode-error span.dynatree-icon
-{
- background-position: 0px -112px;
-/* background-image: url("ltError.gif");*/
-}
-
-/*******************************************************************************
- * Node titles
- */
-
-/* @Chrome: otherwise hit area of node titles is broken (issue 133)
- Removed again for issue 165; (133 couldn't be reproduced) */
-span.dynatree-node
-{
-/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221*/
-/* -moz-box-align: start; /* issue 221 */
-/* display: inline-block; /* Required to make a span sizeable */
-}
-
-
-/* Remove blue color and underline from title links */
-ul.dynatree-container a
-/*, ul.dynatree-container a:visited*/
-{
- color: black; /* inherit doesn't work on IE */
- text-decoration: none;
- vertical-align: top;
- margin: 0px;
- margin-left: 3px;
-/* outline: 0; /* @ Firefox, prevent dotted border after click */
-}
-
-ul.dynatree-container a:hover
-{
-/* text-decoration: underline; */
- background-color: #F2F7FD; /* light blue */
- border-color: #B8D6FB; /* darker light blue */
-}
-
-span.dynatree-node a
-{
- font-size: 10pt; /* required for IE, quirks mode */
- display: inline-block; /* Better alignment, when title contains <br> */
-/* vertical-align: top;*/
- padding-left: 3px;
- padding-right: 3px; /* Otherwise italic font will be outside bounds */
- /* line-height: 16px; /* should be the same as img height, in case 16 px */
-}
-span.dynatree-folder a
-{
- font-weight: bold;
-}
-
-ul.dynatree-container a:focus,
-span.dynatree-focused a:link /* @IE */
-{
- background-color: #EFEBDE; /* gray */
-}
-
-span.dynatree-has-children a
-{
-}
-
-span.dynatree-expanded a
-{
-}
-
-span.dynatree-selected a
-{
- color: green;
- font-style: italic;
-}
-
-span.dynatree-active a
-{
- background-color: #3169C6 !important;
- color: white !important; /* @ IE6 */
-}
-
-/*******************************************************************************
- * Drag'n'drop support
- */
-
-/*** Helper object ************************************************************/
-div.dynatree-drag-helper
-{
-}
-div.dynatree-drag-helper a
-{
- border: 1px solid gray;
- background-color: white;
- padding-left: 5px;
- padding-right: 5px;
- opacity: 0.8;
-}
-span.dynatree-drag-helper-img
-{
- /*
- position: relative;
- left: -16px;
- */
-}
-div.dynatree-drag-helper /*.dynatree-drop-accept*/
-{
-
-/* border-color: green;
- background-color: red;*/
-}
-div.dynatree-drop-accept span.dynatree-drag-helper-img
-{
- background-position: -32px -112px;
-}
-div.dynatree-drag-helper.dynatree-drop-reject
-{
- border-color: red;
-}
-div.dynatree-drop-reject span.dynatree-drag-helper-img
-{
- background-position: -16px -112px;
-}
-
-/*** Drop marker icon *********************************************************/
-
-#dynatree-drop-marker
-{
- width: 24px;
- position: absolute;
- background-position: 0 -128px;
- margin: 0;
-/* border: 1px solid red; */
-}
-#dynatree-drop-marker.dynatree-drop-after,
-#dynatree-drop-marker.dynatree-drop-before
-{
- width:64px;
- background-position: 0 -144px;
-}
-#dynatree-drop-marker.dynatree-drop-copy
-{
- background-position: -64px -128px;
-}
-#dynatree-drop-marker.dynatree-drop-move
-{
- background-position: -64px -128px;
-}
-
-/*** Source node while dragging ***********************************************/
-
-span.dynatree-drag-source
-{
- /* border: 1px dotted gray; */
- background-color: #e0e0e0;
-}
-span.dynatree-drag-source a
-{
- color: gray;
-}
-
-/*** Target node while dragging cursor is over it *****************************/
-
-span.dynatree-drop-target
-{
- /*border: 1px solid gray;*/
-}
-span.dynatree-drop-target a
-{
-}
-span.dynatree-drop-target.dynatree-drop-accept a
-{
- /*border: 1px solid green;*/
- background-color: #3169C6 !important;
- color: white !important; /* @ IE6 */
- text-decoration: none;
-}
-span.dynatree-drop-target.dynatree-drop-reject
-{
- /*border: 1px solid red;*/
-}
-span.dynatree-drop-target.dynatree-drop-after a
-{
-}
-
-
-/*******************************************************************************
- * Custom node classes (sample)
- */
-
-span.custom1 a
-{
- background-color: maroon;
- color: yellow;
-}
-
-/*******************************************************************************
- * Custom node classes (sample)
- */
-
-input.hidden
-{
- display: none;
-}
-
diff --git a/SemanticForms/skins/vline-rtl.gif b/SemanticForms/skins/vline-rtl.gif
deleted file mode 100644
index 0400cb3e..00000000
--- a/SemanticForms/skins/vline-rtl.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/skins/vline.gif b/SemanticForms/skins/vline.gif
deleted file mode 100644
index 1b00ae50..00000000
--- a/SemanticForms/skins/vline.gif
+++ /dev/null
Binary files differ
diff --git a/SemanticForms/specials/SF_CreateCategory.php b/SemanticForms/specials/SF_CreateCategory.php
deleted file mode 100644
index 51808944..00000000
--- a/SemanticForms/specials/SF_CreateCategory.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-/**
- * A special page holding a form that allows the user to create a category
- * page, with SF forms associated with it
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFCreateCategory extends SpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'CreateCategory' );
- }
-
- static function createCategoryText( $default_form, $category_name, $parent_category ) {
-
- if ( $default_form === '' ) {
- $text = wfMessage( 'sf_category_desc', $category_name )->inContentLanguage()->text();
- } else {
- global $sfgContLang;
- $specprops = $sfgContLang->getPropertyLabels();
- $form_tag = "[[" . $specprops[SF_SP_HAS_DEFAULT_FORM] . "::$default_form]]";
- $text = wfMessage( 'sf_category_hasdefaultform', $form_tag )->inContentLanguage()->text();
- }
- if ( $parent_category !== '' ) {
- global $wgContLang;
- $namespace_labels = $wgContLang->getNamespaces();
- $category_namespace = $namespace_labels[NS_CATEGORY];
- $text .= "\n\n[[$category_namespace:$parent_category]]";
- }
- return $text;
- }
-
- function execute( $query ) {
- global $wgOut, $wgRequest, $sfgScriptPath;
-
- $this->setHeaders();
-
- // Cycle through the query values, setting the appropriate
- // local variables.
- if ( !is_null( $query ) ) {
- $presetCategoryName = str_replace( '_', ' ', $query );
- $wgOut->setPageTitle( wfMessage( 'sf-createcategory-with-name', $presetCategoryName )->text() );
- $category_name = $presetCategoryName;
- } else {
- $presetCategoryName = null;
- $category_name = $wgRequest->getVal( 'category_name' );
- }
- $default_form = $wgRequest->getVal( 'default_form' );
- $parent_category = $wgRequest->getVal( 'parent_category' );
-
- $category_name_error_str = null;
- $save_page = $wgRequest->getCheck( 'wpSave' );
- $preview_page = $wgRequest->getCheck( 'wpPreview' );
- if ( $save_page || $preview_page ) {
- // Guard against cross-site request forgeries (CSRF).
- $validToken = $this->getUser()->matchEditToken( $wgRequest->getVal( 'csrf' ), 'CreateCategory' );
- if ( !$validToken ) {
- $text = "This appears to be a cross-site request forgery; canceling save.";
- $wgOut->addHTML( $text );
- return;
- }
- // Validate category name
- if ( $category_name === '' ) {
- $category_name_error_str = wfMessage( 'sf_blank_error' )->text();
- } else {
- // Redirect to wiki interface
- $wgOut->setArticleBodyOnly( true );
- $title = Title::makeTitleSafe( NS_CATEGORY, $category_name );
- $full_text = SFCreateCategory::createCategoryText( $default_form, $category_name, $parent_category );
- $text = SFUtils::printRedirectForm( $title, $full_text, "", $save_page, $preview_page, false, false, false, null, null );
- $wgOut->addHTML( $text );
- return;
- }
- }
-
- $all_forms = SFUtils::getAllForms();
-
- // Set 'title' as hidden field, in case there's no URL niceness
- global $wgContLang;
- $mw_namespace_labels = $wgContLang->getNamespaces();
- $text = "\t" . '<form action="" method="post">' . "\n";
- $firstRow = '';
- if ( is_null( $presetCategoryName ) ) {
- $text .= "\t" . Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
- $firstRow .= wfMessage( 'sf_createcategory_name' )->text() . ' ' .
- Html::input( 'category_name', null, 'text',
- array( 'size' => 25 ) ) . "\n";
- if ( !is_null( $category_name_error_str ) ) {
- $firstRow .= Html::element( 'span',
- array( 'style' => 'color: red;' ),
- $category_name_error_str ) . "\n";
- }
- }
- $firstRow .= "\t" . wfMessage( 'sf_createcategory_defaultform' )->text() . "\n";
- $formSelector = "\t" . Html::element( 'option', null, null ). "\n";
- foreach ( $all_forms as $form ) {
- $formSelector .= "\t" . Html::element( 'option', null, $form ) . "\n";
- }
-
- $firstRow .= Html::rawElement( 'select',
- array( 'id' => 'form_dropdown', 'name' => 'default_form' ),
- $formSelector );
- $text .= Html::rawElement( 'p', null, $firstRow ) . "\n";
- $secondRow = wfMessage( 'sf_createcategory_makesubcategory' )->text() . ' ';
- $selectBody = "\t" . Html::element( 'option', null, null ). "\n";
- $categories = SFUtils::getCategoriesForPage();
- foreach ( $categories as $category ) {
- $category = str_replace( '_', ' ', $category );
- $selectBody .= "\t" . Html::element( 'option', null, $category ) . "\n";
- }
- $secondRow .= Html::rawElement( 'select', array( 'id' => 'category_dropdown', 'name' => 'parent_category' ), $selectBody );
- $text .= Html::rawElement( 'p', null, $secondRow ) . "\n";
-
- $text .= "\t" . Html::hidden( 'csrf', $this->getUser()->getEditToken( 'CreateCategory' ) ) . "\n";
-
- $editButtonsText = "\t" . Html::input( 'wpSave', wfMessage( 'savearticle' )->text(), 'submit', array( 'id' => 'wpSave' ) ) . "\n";
- $editButtonsText .= "\t" . Html::input( 'wpPreview', wfMessage( 'preview' )->text(), 'submit', array( 'id' => 'wpPreview' ) ) . "\n";
- $text .= "\t" . Html::rawElement( 'div', array( 'class' => 'editButtons' ), $editButtonsText ) . "\n";
- $text .= "\t</form>\n";
-
- $wgOut->addExtensionStyle( $sfgScriptPath . "/skins/SemanticForms.css" );
- $wgOut->addHTML( $text );
- }
-}
diff --git a/SemanticForms/specials/SF_CreateClass.php b/SemanticForms/specials/SF_CreateClass.php
deleted file mode 100644
index b4a10741..00000000
--- a/SemanticForms/specials/SF_CreateClass.php
+++ /dev/null
@@ -1,335 +0,0 @@
-<?php
-/**
- * A special page holding a form that allows the user to create a semantic
- * property.
- *
- * @author Yaron Koren
- * @author Sanyam Goyal
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFCreateClass extends SpecialPage {
- /**
- * Constructor
- */
- public function __construct() {
- parent::__construct( 'CreateClass', 'createclass' );
- }
-
- static function addJavascript( $numStartingRows ) {
- global $wgOut;
-
- SFUtils::addJavascriptAndCSS();
-
- $jsText =<<<END
-<script>
-var rowNum = $numStartingRows;
-function createClassAddRow() {
- rowNum++;
- newRow = jQuery('#starterRow').clone().css('display', '');
- newHTML = newRow.html().replace(/starter/g, rowNum);
- newRow.html(newHTML);
- jQuery('#mainTable').append(newRow);
-}
-
-function disableFormAndCategoryInputs() {
- if (jQuery('#template_multiple').attr('checked')) {
- jQuery('#form_name').attr('disabled', 'disabled');
- jQuery('label[for="form_name"]').css('color', 'gray').css('font-style', 'italic');
- jQuery('#category_name').attr('disabled', 'disabled');
- jQuery('label[for="category_name"]').css('color', 'gray').css('font-style', 'italic');
- jQuery('#connecting_property_div').show('fast');
- } else {
- jQuery('#form_name').removeAttr('disabled');
- jQuery('label[for="form_name"]').css('color', '').css('font-style', '');
- jQuery('#category_name').removeAttr('disabled');
- jQuery('label[for="category_name"]').css('color', '').css('font-style', '');
- jQuery('#connecting_property_div').hide('fast');
- }
-}
-
-</script>
-
-END;
- $wgOut->addScript( $jsText );
- }
-
- static function createAllPages() {
- global $wgOut, $wgRequest, $wgUser;
-
- $template_name = trim( $wgRequest->getVal( "template_name" ) );
- $template_multiple = $wgRequest->getBool( "template_multiple" );
- // If this is a multiple-instance template, there
- // shouldn't be a corresponding form or category.
- if ( $template_multiple ) {
- $form_name = null;
- $category_name = null;
- } else {
- $form_name = trim( $wgRequest->getVal( "form_name" ) );
- $category_name = trim( $wgRequest->getVal( "category_name" ) );
- }
- if ( $template_name === '' || ( !$template_multiple && ( $form_name === '' || $category_name === '' ) ) ) {
- $wgOut->addWikiMsg( 'sf_createclass_missingvalues' );
- return;
- }
- $fields = array();
- $jobs = array();
- // Cycle through all the rows passed in.
- for ( $i = 1; $wgRequest->getCheck( "field_name_$i" ); $i++ ) {
- // go through the query values, setting the appropriate local variables
- $property_name = trim( $wgRequest->getVal( "property_name_$i" ) );
- $field_name = trim( $wgRequest->getVal( "field_name_$i" ) );
- $property_type = $wgRequest->getVal( "property_type_$i" );
- $allowed_values = $wgRequest->getVal( "allowed_values_$i" );
- $is_list = $wgRequest->getCheck( "is_list_$i" );
- // Create an SFTemplateField object based on these
- // values, and add it to the $fields array.
- $field = SFTemplateField::create( $field_name, $field_name, $property_name, $is_list );
- $fields[] = $field;
-
- // Create the property, and make a job for it.
- if ( !empty( $property_name ) ) {
- $full_text = SFCreateProperty::createPropertyText( $property_type, '', $allowed_values );
- $property_title = Title::makeTitleSafe( SMW_NS_PROPERTY, $property_name );
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = $full_text;
- $params['edit_summary'] = wfMessage( 'sf_createproperty_editsummary', $property_type)->inContentLanguage()->text();
- $jobs[] = new SFCreatePageJob( $property_title, $params );
- }
- }
-
- // Also create the "connecting property", if there is one.
- $connectingProperty = trim( $wgRequest->getVal('connecting_property') );
- if ( $connectingProperty != '' ) {
- global $smwgContLang;
- $datatypeLabels = $smwgContLang->getDatatypeLabels();
- $property_type = $datatypeLabels['_wpg'];
- $full_text = SFCreateProperty::createPropertyText( $property_type, '', $allowed_values );
- $property_title = Title::makeTitleSafe( SMW_NS_PROPERTY, $connectingProperty );
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = $full_text;
- $params['edit_summary'] = wfMessage( 'sf_createproperty_editsummary', $property_type)->inContentLanguage()->text();
- $jobs[] = new SFCreatePageJob( $property_title, $params );
- }
-
- // Create the template, and save it (might as well save
- // one page, instead of just creating jobs for all of them).
- $template_format = $wgRequest->getVal( "template_format" );
- $sfTemplate = new SFTemplate( $template_name, $fields );
- if ( $template_multiple ) {
- $sfTemplate->setConnectingProperty( $connectingProperty );
- } else {
- $sfTemplate->setCategoryName( $category_name );
- }
- $sfTemplate->setFormat( $template_format );
- $full_text = $sfTemplate->createText();
-
- $template_title = Title::makeTitleSafe( NS_TEMPLATE, $template_name );
- $edit_summary = '';
- if ( method_exists( 'WikiPage', 'doEditContent' ) ) {
- // MW 1.21+
- $template_page = new WikiPage( $template_title );
- $content = new WikitextContent( $full_text );
- $template_page->doEditContent( $content, $edit_summary );
- } else {
- // MW <= 1.20
- $template_article = new Article( $template_title );
- $template_article->doEdit( $full_text, $edit_summary );
- }
-
- // Create the form, and make a job for it.
- if ( $form_name != '' ) {
- $form_template = SFTemplateInForm::create( $template_name, '', false );
- $form_items = array();
- $form_items[] = array( 'type' => 'template',
- 'name' => $form_template->getTemplateName(),
- 'item' => $form_template );
- $form = SFForm::create( $form_name, $form_items );
- $full_text = $form->createMarkup();
- $form_title = Title::makeTitleSafe( SF_NS_FORM, $form_name );
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = $full_text;
- $jobs[] = new SFCreatePageJob( $form_title, $params );
- }
-
- // Create the category, and make a job for it.
- if ( $category_name != '' ) {
- $full_text = SFCreateCategory::createCategoryText( $form_name, $category_name, '' );
- $category_title = Title::makeTitleSafe( NS_CATEGORY, $category_name );
- $params = array();
- $params['user_id'] = $wgUser->getId();
- $params['page_text'] = $full_text;
- $jobs[] = new SFCreatePageJob( $category_title, $params );
- }
-
- Job::batchInsert( $jobs );
-
- $wgOut->addWikiMsg( 'sf_createclass_success' );
- }
-
- function execute( $query ) {
- global $wgOut, $wgRequest, $wgUser, $sfgScriptPath;
- global $wgLang, $smwgContLang;
-
- // Check permissions.
- if ( !$wgUser->isAllowed( 'createclass' ) ) {
- $this->displayRestrictionError();
- return;
- }
-
- $this->setHeaders();
- $wgOut->addExtensionStyle( $sfgScriptPath . "/skins/SemanticForms.css" );
- $numStartingRows = 5;
- self::addJavascript( $numStartingRows );
-
- $createAll = $wgRequest->getCheck( 'createAll' );
- if ( $createAll ) {
- // Guard against cross-site request forgeries (CSRF).
- $validToken = $this->getUser()->matchEditToken( $wgRequest->getVal( 'csrf' ), 'CreateClass' );
- if ( !$validToken ) {
- $text = "This appears to be a cross-site request forgery; canceling save.";
- $wgOut->addHTML( $text );
- return;
- }
-
- self::createAllPages();
- return;
- }
-
- $datatypeLabels = $smwgContLang->getDatatypeLabels();
-
- // Make links to all the other 'Create...' pages, in order to
- // link to them at the top of the page.
- $creation_links = array();
- $creation_links[] = SFUtils::linkForSpecialPage( 'CreateProperty' );
- $creation_links[] = SFUtils::linkForSpecialPage( 'CreateTemplate' );
- $creation_links[] = SFUtils::linkForSpecialPage( 'CreateForm' );
- $creation_links[] = SFUtils::linkForSpecialPage( 'CreateCategory' );
- $form_name_label = wfMessage( 'sf_createclass_nameinput' )->text();
- $category_name_label = wfMessage( 'sf_createcategory_name' )->text();
- $field_name_label = wfMessage( 'sf_createtemplate_fieldname' )->text();
- $list_of_values_label = wfMessage( 'sf_createclass_listofvalues' )->text();
- $property_name_label = wfMessage( 'sf_createproperty_propname' )->text();
- $type_label = wfMessage( 'sf_createproperty_proptype' )->text();
- $allowed_values_label = wfMessage( 'sf_createclass_allowedvalues' )->text();
-
- $text = '<form action="" method="post">' . "\n";
- $text .= "\t" . Html::rawElement( 'p', null, wfMessage( 'sf_createclass_docu', $wgLang->listToText( $creation_links ) )->text() ) . "\n";
- $templateNameLabel = wfMessage( 'sf_createtemplate_namelabel' )->text();
- $templateNameInput = Html::input( 'template_name', null, 'text', array( 'size' => 30 ) );
- $text .= "\t" . Html::rawElement( 'p', null, $templateNameLabel . ' ' . $templateNameInput ) . "\n";
- $templateInfo = SFCreateTemplate::printTemplateStyleInput( 'template_format' );
- $templateInfo .= Html::rawElement( 'p', null,
- Html::element( 'input', array(
- 'type' => 'checkbox',
- 'name' => 'template_multiple',
- 'id' => 'template_multiple',
- 'onclick' => "disableFormAndCategoryInputs()",
- ) ) . ' ' . wfMessage( 'sf_createtemplate_multipleinstance' )->text() ) . "\n";
- // Either #set_internal or #subobject will be added to the
- // template, depending on whether Semantic Internal Objects is
- // installed.
- global $smwgDefaultStore;
- if ( defined( 'SIO_VERSION' ) || $smwgDefaultStore == "SMWSQLStore3" ) {
- $templateInfo .= Html::rawElement( 'div',
- array (
- 'id' => 'connecting_property_div',
- 'style' => 'display: none;',
- ),
- wfMessage( 'sf_createtemplate_connectingproperty' )->text() . "\n" .
- Html::element( 'input', array(
- 'type' => 'text',
- 'name' => 'connecting_property',
- ) ) ) . "\n";
- }
- $text .= Html::rawElement( 'blockquote', null, $templateInfo );
-
- $text .= "\t" . Html::rawElement( 'p', null, Html::element( 'label', array( 'for' => 'form_name' ), $form_name_label ) . ' ' . Html::element( 'input', array( 'size' => '30', 'name' => 'form_name', 'id' => 'form_name' ), null ) ) . "\n";
- $text .= "\t" . Html::rawElement( 'p', null, Html::element( 'label', array( 'for' => 'category_name' ), $category_name_label ) . ' ' . Html::element( 'input', array( 'size' => '30', 'name' => 'category_name', 'id' => 'category_name' ), null ) ) . "\n";
- $text .= "\t" . Html::element( 'br', null, null ) . "\n";
- $property_label = wfMessage( 'smw_pp_type' )->text();
- $text .= <<<END
- <div>
- <table id="mainTable" style="border-collapse: collapse;">
- <tr>
- <th colspan="3" />
- <th colspan="3" style="background: #ddeebb; padding: 4px;">$property_label</th>
- </tr>
- <tr>
- <th colspan="2">$field_name_label</th>
- <th style="padding: 4px;">$list_of_values_label</th>
- <th style="background: #eeffcc; padding: 4px;">$property_name_label</th>
- <th style="background: #eeffcc; padding: 4px;">$type_label</th>
- <th style="background: #eeffcc; padding: 4px;">$allowed_values_label</th>
- </tr>
-
-END;
- // Make one more row than what we're displaying - use the
- // last row as a "starter row", to be cloned when the
- // "Add another" button is pressed.
- for ( $i = 1; $i <= $numStartingRows + 1; $i++ ) {
- if ( $i == $numStartingRows + 1 ) {
- $rowString = 'id="starterRow" style="display: none"';
- $n = 'starter';
- } else {
- $rowString = '';
- $n = $i;
- }
- $text .= <<<END
- <tr $rowString style="margin: 4px;">
- <td>$n.</td>
- <td><input type="text" size="25" name="field_name_$n" /></td>
- <td style="text-align: center;"><input type="checkbox" name="is_list_$n" /></td>
- <td style="background: #eeffcc; padding: 4px;"><input type="text" size="25" name="property_name_$n" /></td>
- <td style="background: #eeffcc; padding: 4px;">
-
-END;
- $typeDropdownBody = '';
- foreach ( $datatypeLabels as $label ) {
- $typeDropdownBody .= "\t\t\t\t<option>$label</option>\n";
- }
- $text .= "\t\t\t\t" . Html::rawElement( 'select', array( 'name' => "property_type_$n" ), $typeDropdownBody ) . "\n";
- $text .= <<<END
- </td>
- <td style="background: #eeffcc; padding: 4px;"><input type="text" size="25" name="allowed_values_$n" /></td>
-
-END;
- }
- $text .= <<<END
- </tr>
- </table>
- </div>
-
-END;
- $add_another_button = Html::element( 'input',
- array(
- 'type' => 'button',
- 'value' => wfMessage( 'sf_formedit_addanother' )->text(),
- 'onclick' => "createClassAddRow()"
- )
- );
- $text .= Html::rawElement( 'p', null, $add_another_button ) . "\n";
- // Set 'title' as hidden field, in case there's no URL niceness
- $cc = $this->getTitle();
- $text .= Html::hidden( 'title', SFUtils::titleURLString( $cc ) );
-
- $text .= "\t" . Html::hidden( 'csrf', $this->getUser()->getEditToken( 'CreateClass' ) ) . "\n";
-
- $text .= Html::element( 'input',
- array(
- 'type' => 'submit',
- 'name' => 'createAll',
- 'value' => wfMessage( 'sf_createclass_create' )->text()
- )
- );
- $text .= "</form>\n";
- $wgOut->addHTML( $text );
- }
-}
diff --git a/SemanticForms/specials/SF_CreateForm.php b/SemanticForms/specials/SF_CreateForm.php
deleted file mode 100644
index d3ec6a32..00000000
--- a/SemanticForms/specials/SF_CreateForm.php
+++ /dev/null
@@ -1,565 +0,0 @@
-<?php
-/**
- * A special page holding a form that allows the user to create a data-entry
- * form.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFCreateForm extends SpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'CreateForm' );
- }
-
- function execute( $query ) {
- global $wgRequest, $wgOut;
-
- $this->setHeaders();
- if ( $wgRequest->getCheck( 'showinputtypeoptions' ) ) {
- $wgOut->disable();
-
- // handle Ajax action
- $inputType = $wgRequest->getVal( 'showinputtypeoptions' );
- $fieldFormText = $wgRequest->getVal( 'formfield' );
- $paramValues = array();
- foreach ( $wgRequest->getArray('params') as $key => $value ) {
- if ( ( $pos = strpos( $key, '_' . $fieldFormText ) ) != false ) {
- $paramName = substr( $key, 0, $pos );
- // Spaces got replaced by underlines in
- // the query.
- $paramName = str_replace( '_', ' ', $paramName );
- $paramValues[$paramName] = $value;
- }
- }
- echo self::showInputTypeOptions( $inputType, $fieldFormText, $paramValues );
- } else {
- $this->doSpecialCreateForm( $query );
- }
- }
-
- function doSpecialCreateForm( $query ) {
- global $wgOut, $wgRequest, $sfgScriptPath;
- $db = wfGetDB( DB_SLAVE );
-
- if ( !is_null( $query ) ) {
- $presetFormName = str_replace( '_', ' ', $query );
- $wgOut->setPageTitle( wfMessage( 'sf-createform-with-name', $presetFormName )->text() );
- $form_name = $presetFormName;
- } else {
- $presetFormName = null;
- $form_name = $wgRequest->getVal( 'form_name' );
- }
-
- // Create Javascript to populate fields to let the user input
- // parameters for the field, based on the input type selected
- // in the dropdown.
- $url = Skin::makeSpecialUrl( 'CreateForm', "showinputtypeoptions=' + this.val() + '&formfield=' + this.attr('formfieldid') + '" );
- foreach ( $wgRequest->getValues() as $param => $value ) {
- $url .= '&params[' . Xml::escapeJsString( $param ) . ']=' . Xml::escapeJsString( $value );
- }
-
- $wgOut->addModules( 'ext.semanticforms.collapsible' );
- $section_name_error_str = '<font color="red" id="section_error">' . wfMessage( 'sf_blank_error' )->escaped() . '</font>';
-
- $wgOut->addScript("<script>
-jQuery.fn.displayInputParams = function() {
- inputParamsDiv = this.closest('.formField').find('.otherInputParams');
- jQuery.ajax({
- url: '$url',
- context: document.body,
- success: function(data){
- inputParamsDiv.html(data);
- }
- });
-};
-jQuery(document).ready(function() {
- jQuery('.inputTypeSelector').change( function() {
- jQuery(this).displayInputParams();
- });
- jQuery('#addsection').click( function(event) {
- if(jQuery('#sectionname').val() == '') {
- event.preventDefault();
- jQuery('#section_error').remove();
- jQuery('<div/>').append('$section_name_error_str').appendTo('#sectionerror');
- }
- });
-});
-</script>");
-
-
- // Get the names of all templates on this site.
- $all_templates = array();
- $res = $db->select(
- 'page',
- 'page_title',
- array( 'page_namespace' => NS_TEMPLATE, 'page_is_redirect' => 0 ),
- __METHOD__,
- array( 'ORDER BY' => 'page_title' )
- );
-
- if ( $db->numRows( $res ) > 0 ) {
- while ( $row = $db->fetchRow( $res ) ) {
- $template_name = str_replace( '_', ' ', $row[0] );
- $all_templates[] = $template_name;
- }
- }
-
- $deleted_template_loc = null;
- $deleted_section_loc = null;
- // To keep the templates and sections
- $form_items = array();
-
- // Handle inputs.
- foreach ( $wgRequest->getValues() as $var => $val ) {
- # ignore variables that are not of the right form
- if ( strpos( $var, "_" ) != false ) {
- # get the template declarations and work from there
- list ( $action, $id ) = explode( "_", $var, 2 );
- if ( $action == "template" ) {
- // If the button was pressed to remove
- // this template, just don't add it to
- // the array.
- if ( $wgRequest->getVal( "del_$id" ) != null ) {
- $deleted_template_loc = $id;
- } else {
- $form_template = SFTemplateInForm::create( $val,
- $wgRequest->getVal( "label_$id" ),
- $wgRequest->getVal( "allow_multiple_$id" ) );
- $form_items[] = array( 'type' => 'template',
- 'name' => $form_template->getTemplateName(),
- 'item' => $form_template );
- }
- } elseif ( $action == "section" ) {
- if ( $wgRequest->getVal( "delsection_$id" ) != null ) {
- $deleted_section_loc = $id;
- } else {
- $form_section = SFPageSection::create( $val );
- $form_items[] = array( 'type' => 'section',
- 'name' => $form_section->getSectionName(),
- 'item' => $form_section );
- }
- }
- }
- }
- if ( $wgRequest->getVal( 'add_field' ) != null ) {
- $form_template = SFTemplateInForm::create( $wgRequest->getVal( 'new_template' ), "", false );
- $template_loc = $wgRequest->getVal( 'before_template' );
- $template_count = 0;
- if ( $template_loc === null ) {
- $new_template_loc = 0;
- $template_loc = 0;
- } else {
- // Count the number of templates before the
- // location of the template to be added
- for ( $i = 0; $i < $template_loc; $i++ ) {
- if ( $form_items[$i]['type'] == 'template' ) {
- $template_count++;
- }
- }
- $new_template_loc = $template_count;
- }
- // @HACK - array_splice() doesn't work for objects, so
- // we have to first insert a stub element into the
- // array, then replace that with the actual object.
- array_splice( $form_items, $template_loc, 0, "stub" );
- $form_items[$template_loc] = array( 'type' => 'template', 'name' => $form_template->getTemplateName(), 'item' => $form_template );
- } else {
- $template_loc = null;
- $new_template_loc = null;
- }
-
- if ( $wgRequest->getVal( 'add_section' ) != null ) {
- $form_section = SFPageSection::create( $wgRequest->getVal( 'sectionname' ) );
- $section_loc = $wgRequest->getVal( 'before_section' );
- $section_count = 0;
- if ( $section_loc === null ) {
- $new_section_loc = 0;
- $section_loc = 0;
- } else {
- // Count the number of sections before the
- // location of the section to be added
- for ( $i = 0; $i < $section_loc; $i++ ) {
- if ( $form_items[$i]['type'] == 'section' ) {
- $section_count++;
- }
- }
- $new_section_loc = $section_count;
- }
- // The same used hack for templates
- array_splice( $form_items, $section_loc, 0, "stub" );
- $form_items[$section_loc] = array( 'type' => 'section', 'name' => $form_section->getSectionName(), 'item' => $form_section );
- } else {
- $section_loc = null;
- $new_section_loc = null;
- }
-
- // Now cycle through the templates and fields, modifying each
- // one per the query variables.
- $templates = 0; $sections = 0;
- foreach ( $form_items as $fi ) {
- if ( $fi['type'] == 'template' ) {
- foreach ( $fi['item']->getFields() as $j => $field ) {
-
- $old_i = SFFormUtils::getChangedIndex( $templates, $new_template_loc, $deleted_template_loc );
- foreach ( $wgRequest->getValues() as $key => $value ) {
- if ( ( $pos = strpos( $key, '_' . $old_i . '_' . $j ) ) != false ) {
- $paramName = substr( $key, 0, $pos );
- // Spaces got replaced by
- // underlines in the query.
- $paramName = str_replace( '_', ' ', $paramName );
- } else {
- continue;
- }
-
- if ( $paramName == 'label' ) {
- $field->template_field->setLabel( $value );
- } elseif ( $paramName == 'input type' ) {
- $input_type = $wgRequest->getVal( "input_type_" . $old_i . "_" . $j );
- if ( $input_type == 'hidden' ) {
- $field->template_field->setInputType( $input_type );
- $field->setIsHidden( true );
- } elseif ( substr( $input_type, 0, 1 ) == '.' ) {
- // It's the default input type -
- // don't do anything.
- } else {
- $field->template_field->setInputType( $input_type );
- }
- } else {
- if ( ! empty( $value ) ) {
- if ( $value == 'on' ) {
- $value = true;
- }
- $field->setFieldArg( $paramName, $value );
- }
- }
- }
- }
- $templates++;
-
- } elseif ( $fi['type'] == 'section' ) {
- $section = $fi['item'];
- $old_i = SFFormUtils::getChangedIndex( $sections, $new_section_loc, $deleted_section_loc );
- foreach ( $wgRequest->getValues() as $key => $value ) {
- if ( ( $pos = strpos( $key, '_section_' . $old_i ) ) != false ) {
- $paramName = substr( $key, 0, $pos );
- $paramName = str_replace( '_', ' ', $paramName );
- } else {
- continue;
- }
-
- if ( !empty( $value ) ) {
- if ( $value == 'on' ) {
- $value = true;
- }
- if ( $paramName == 'level' ) {
- $section->setSectionLevel( $value );
- } elseif ( $paramName == 'hidden' ) {
- $section->setIsHidden( $value );
- } elseif ( $paramName == 'restricted' ) {
- $section->setIsRestricted( $value );
- } elseif ( $paramName == 'mandatory' ) {
- $section->setIsMandatory( $value );
- } else {
- $section->setSectionArgs( $paramName, $value );
- }
- }
- }
- $sections++;
- }
-
- }
-
- $form = SFForm::create( $form_name, $form_items );
-
- // If a submit button was pressed, create the form-definition
- // file, then redirect.
- $save_page = $wgRequest->getCheck( 'wpSave' );
- $preview_page = $wgRequest->getCheck( 'wpPreview' );
- if ( $save_page || $preview_page ) {
- $validToken = $this->getUser()->matchEditToken( $wgRequest->getVal( 'csrf' ), 'CreateForm' );
- if ( !$validToken ) {
- $text = "This appears to be a cross-site request forgery; canceling save.";
- $wgOut->addHTML( $text );
- return;
- }
-
- // Validate form name.
- if ( $form->getFormName() == "" ) {
- $form_name_error_str = wfMessage( 'sf_blank_error' )->text();
- } else {
- // Redirect to wiki interface.
- $wgOut->setArticleBodyOnly( true );
- $title = Title::makeTitleSafe( SF_NS_FORM, $form->getFormName() );
- $full_text = $form->createMarkup();
- $text = SFUtils::printRedirectForm( $title, $full_text, "", $save_page, $preview_page, false, false, false, null, null );
- $wgOut->addHTML( $text );
- return;
- }
- }
-
- $text = "\t" . '<form action="" method="post">' . "\n";
- if ( is_null( $presetFormName ) ) {
- // Set 'title' field, in case there's no URL niceness
- $text .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
- $text .= "\n\t<p>" . wfMessage( 'sf_createform_nameinput' )->escaped() . ' ' . wfMessage( 'sf_createform_nameinputdesc' )->escaped() . Html::input( 'form_name', $form_name, 'text', array( 'size'=> 25 ) );
- if ( ! empty( $form_name_error_str ) ) {
- $text .= "\t" . Html::element( 'font', array( 'color' => 'red' ), $form_name_error_str );
- }
- $text .= "</p>\n";
- }
-
- $text .= $form->creationHTML();
-
- $text .= "<h2> " . wfMessage( 'sf_createform_addelements' )->escaped() . " </h2>";
- $text .= "\t<p>" . wfMessage( 'sf_createform_addtemplate' )->escaped() . "\n";
-
- $select_body = "";
- foreach ( $all_templates as $template ) {
- $select_body .= " " . Html::element( 'option', array( 'value' => $template ), $template ) . "\n";
- }
- $text .= "\t" . Html::rawElement( 'select', array( 'name' => 'new_template' ), $select_body ) . "\n";
-
- // If a template has already been added, show a dropdown letting
- // the user choose where in the list to add a new dropdown.
- $select_body = "";
- foreach ( $form_items as $i => $fi ) {
- if ( $fi['type'] == 'template' ) {
- $option_str = wfMessage( 'sf_createform_template' )->escaped();
- } elseif ( $fi['type'] == 'section' ) {
- $option_str = wfMessage( 'sf_createform_pagesection' )->escaped();
- }
- $option_str .= $fi['name'];
- $select_body .= "\t" . Html::element( 'option', array( 'value' => $i ), $option_str ) . "\n";
- }
- $final_index = count( $form_items );
- $at_end_msg = wfMessage( 'sf_createform_atend' )->escaped();
- $select_body .= "\t" . Html::element( 'option', array( 'value' => $final_index, 'selected' => 'selected' ), $at_end_msg );
-
- // Selection for before which item this template should be placed
- if ( count( $form_items ) > 0 ) {
- $text .= wfMessage( 'sf_createform_before' )->escaped();
- $text .= Html::rawElement( 'select', array( 'name' => 'before_template' ), $select_body ) . "\n";
- }
-
- // Disable 'save' and 'preview' buttons if user has not yet
- // added any templates.
- $add_button_text = wfMessage( 'sf_createform_add' )->text();
- $text .= "\t" . Html::input( 'add_field', $add_button_text, 'submit' ) . "\n";
-
- // The form HTML for page sections
- $text .= "</br></br>" . Html::rawElement( 'span', null, wfMessage( 'sf_createform_addsection' )->text() . ":" ) . "\n";
- $text .= Html::input( 'sectionname', '', 'text', array( 'size' => '30', 'placeholder' => wfMessage( 'sf_createform_sectionname' )->text(), 'id' => 'sectionname' ) ) . "\n";
-
- // Selection for before which item this section should be placed
- if ( count( $form_items ) > 0 ) {
- $text .= wfMessage( 'sf_createform_before' )->escaped();
- $text .= Html::rawElement( 'select', array( 'name' => 'before_section' ), $select_body ) . "\n";
- }
-
- $add_section_text = wfMessage( 'sf_createform_addsection' )->text();
- $text .= "\t" . Html::input( 'add_section', $add_section_text, 'submit', array( 'id' => 'addsection' ) );
- $text .= "\n\t" . Html::rawElement( 'div', array( 'id' => 'sectionerror' ) );
- $text .= <<<END
-</p>
- <br />
-
-END;
-
- $text .= "\t" . Html::hidden( 'csrf', $this->getUser()->getEditToken( 'CreateForm' ) ) . "\n";
-
- $saveAttrs = array( 'id' => 'wpSave' );
- if ( count( $form_items ) == 0 ) {
- $saveAttrs['disabled'] = true;
- }
- $editButtonsText = "\t" . Html::input( 'wpSave', wfMessage( 'savearticle' )->text(), 'submit', $saveAttrs ) . "\n";
- $previewAttrs = array( 'id' => 'wpPreview' );
- if ( count( $form_items ) == 0 ) {
- $previewAttrs['disabled'] = true;
- }
- $editButtonsText .= "\t" . Html::input( 'wpPreview', wfMessage( 'preview' )->text(), 'submit', $previewAttrs ) . "\n";
- $text .= "\t" . Html::rawElement( 'div', array( 'class' => 'editButtons' ),
- Html::rawElement( 'p', array(), $editButtonsText ) . "\n" ) . "\n";
- // Explanatory message if buttons are disabled because no
- // templates have been added.
- if ( count( $form_items ) == 0 ) {
- $text .= "\t" . Html::element( 'p', null, "(" . wfMessage( 'sf_createform_additembeforesave' )->text() . ")" );
- }
- $text .= <<<END
- </form>
-
-END;
-
- $wgOut->addExtensionStyle( $sfgScriptPath . "/skins/SemanticForms.css" );
- $wgOut->addHTML( $text );
-
- //Don't submit the form if enter is pressed on a text input box or a select
- $wgOut->addScript('<script>
- jQuery("input,select").keypress(function(event) { return event.keyCode != 13; });
- </script>');
- }
-
- /**
- * Prints an input for a form-field parameter.
- * Code borrowed from Semantic MediaWiki's
- * SMWAskPage::addOptionInput().
- */
- public static function inputTypeParamInput( $type, $paramName, $cur_value, array $param, array $paramValues, $fieldFormText ) {
- if ( $type == 'int' ) {
- return Html::input(
- $paramName . '_' . $fieldFormText,
- $cur_value,
- 'text',
- array( 'size' => 6 )
- );
- } elseif ( $type == 'string' ) {
- return Html::input(
- $paramName . '_' . $fieldFormText,
- $cur_value,
- 'text',
- array( 'size' => 32 )
- );
- } elseif ( $type == 'text' ) {
- return Html::element( 'textarea', array(
- 'name' => $paramName . '_' . $fieldFormText,
- 'rows' => 4
- ), $cur_value );
- } elseif ( $type == 'enumeration' ) {
- $text = '<select name="p[' . htmlspecialchars( $paramName ) . ']">';
- $text .= "\n <option value=''></option>\n";
-
- $parts = array();
- foreach ( $param['values'] as $value ) {
- $parts[] = '<option value="' . htmlspecialchars( $value ) . '"' .
- ( $cur_value == $value ? ' selected' : '' ) . '>' .
- htmlspecialchars( $value ) . '</option>';
- }
-
- $text .= implode( "\n", $parts ) . "\n</select>";
- return $text;
- } elseif ( $type == 'enum-list' ) {
- $cur_values = explode( ',', $cur_value );
- foreach ( $param['values'] as $val ) {
- $text .= '<span style="white-space: nowrap; padding-right: 5px;"><input type="checkbox" name="p[' .
- htmlspecialchars( $paramName ) . '][' . htmlspecialchars( $val ). ']" value="true"' .
- ( in_array( $val, $cur_values ) ? ' checked' : '' ) . '/> <tt>' . htmlspecialchars( $val ) . "</tt></span>\n";
- }
- return $text;
- } elseif ( $type == 'boolean' ) {
- $checkboxAttrs = array();
- if ( $cur_value) { $checkboxAttrs['checked'] = true; }
- return Html::input( $paramName . '_' . $fieldFormText, null, 'checkbox', $checkboxAttrs );
- }
- }
-
- /**
- * Display a form section showing the options for a given format,
- * based on the getParameters() value for that format's query printer.
- *
- * @param string $format
- * @param array $paramValues
- *
- * @return string
- */
- public static function showInputTypeOptions( $inputType, $fieldFormText, $paramValues ) {
- global $sfgFormPrinter;
- global $wgParser;
-
- $text = '';
-
- // Handle default types, which start with a '.' to differentiate
- // them.
- if ( substr( $inputType, 0, 1) == '.' ) {
- $inputType = substr( $inputType, 1 );
- }
-
- $inputTypeClass = $sfgFormPrinter->getInputType( $inputType );
-
- $params = method_exists( $inputTypeClass, 'getParameters' ) ? call_user_func( array( $inputTypeClass, 'getParameters' ) ) : array();
-
- $i = 0;
- foreach ( $params as $param ) {
- $paramName = $param['name'];
- $type = $param['type'];
- $desc = $wgParser->parse( $param['description'], new Title(), new ParserOptions() )->getText();
-
- if ( array_key_exists( $paramName, $paramValues ) ) {
- $cur_value = $paramValues[$paramName];
- } elseif ( array_key_exists( 'default', $param ) ) {
- $cur_value = $param['default'];
- } else {
- $cur_value = '';
- }
-
- // 3 values per row, with alternating colors for rows
- if ( $i % 3 == 0 ) {
- $bgcolor = ( $i % 6 ) == 0 ? '#eee' : 'white';
- $text .= "<div style=\"background: $bgcolor;\">";
- }
-
- $text .= "<div style=\"width: 30%; padding: 5px; float: left;\">$paramName:\n";
-
- $text .= self::inputTypeParamInput( $type, $paramName, $cur_value, $param, array(), $fieldFormText );
- $text .= "\n<br />" . Html::rawElement( 'em', null, $desc ) . "\n</div>\n";
-
- if ( $i % 3 == 2 || $i == count( $params ) - 1 ) {
- $text .= "<div style=\"clear: both\";></div></div>\n";
- }
- ++$i;
- }
- return $text;
- }
-
- /**
- * Display other parameters for a page section
- *
- * @return string
- */
- public static function showSectionParameters( $section_count, $paramValues ) {
- global $wgParser;
-
- $text = '';
- $descriptiontext = '';
- $section_text = 'section_' . $section_count;
-
- $params = SFPageSection::getParameters();
- $i = 0;
- foreach ( $params as $param ) {
- $paramName = $param['name'];
- $type = $param['type'];
- $desc = $wgParser->parse( $param['description'], new Title(), new ParserOptions() )->getText();
-
- if ( array_key_exists( $paramName, $paramValues ) ) {
- $cur_value = $paramValues[$paramName];
- } elseif ( array_key_exists( 'default', $param ) ) {
- $cur_value = $param['default'];
- } else {
- $cur_value = '';
- }
-
- // 3 values per row, with alternating colors for rows
- if ( $i % 3 == 0 ) {
- $bgcolor = ( $i % 6 ) == 0 ? '#ecf0f6' : 'white';
- $text .= "<div style=\"background: $bgcolor;\">";
- }
-
- $text .= "<div style=\"width: 30%; padding: 5px; float: left;\">$paramName:\n";
-
- $text .= self::inputTypeParamInput( $type, $paramName, $cur_value, $param, array(), $section_text );
- $text .= "\n<br />" . Html::rawElement( 'em', null, $desc ) . "\n</div>\n";
- if ( $i % 3 == 2 || $i == count( $params ) - 1 ) {
- $text .= "<div style=\"clear: both\";></div></div>\n";
- }
- ++$i;
- }
- return $text;
- }
-}
diff --git a/SemanticForms/specials/SF_CreateProperty.php b/SemanticForms/specials/SF_CreateProperty.php
deleted file mode 100644
index 49baa4bf..00000000
--- a/SemanticForms/specials/SF_CreateProperty.php
+++ /dev/null
@@ -1,189 +0,0 @@
-<?php
-/**
- * A special page holding a form that allows the user to create a semantic
- * property.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFCreateProperty extends SpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'CreateProperty' );
- }
-
- function execute( $query ) {
- $this->setHeaders();
- $this->printCreatePropertyForm( $query );
- }
-
- static function createPropertyText( $property_type, $default_form, $allowed_values_str ) {
- global $smwgContLang;
- $prop_labels = $smwgContLang->getPropertyLabels();
- $type_tag = "[[{$prop_labels['_TYPE']}::$property_type]]";
- $text = wfMessage( 'sf_property_isproperty', $type_tag )->inContentLanguage()->text();
- if ( $default_form !== '' ) {
- global $sfgContLang;
- $sf_prop_labels = $sfgContLang->getPropertyLabels();
- $default_form_tag = "[[{$sf_prop_labels[SF_SP_HAS_DEFAULT_FORM]}::$default_form]]";
- $text .= ' ' . wfMessage( 'sf_property_linkstoform', $default_form_tag )->inContentLanguage()->text();
- }
- if ( $allowed_values_str !== '' ) {
- // replace the comma substitution character that has no chance of
- // being included in the values list - namely, the ASCII beep
- global $sfgListSeparator;
- $allowed_values_str = str_replace( "\\$sfgListSeparator", "\a", $allowed_values_str );
- $allowed_values_array = explode( $sfgListSeparator, $allowed_values_str );
- $text .= "\n\n" . wfMessage( 'sf_property_allowedvals' )
- ->numParams( count( $allowed_values_array ) )->inContentLanguage()->text();
- foreach ( $allowed_values_array as $i => $value ) {
- if ( $value == '' ) continue;
- // replace beep back with comma, trim
- $value = str_replace( "\a", $sfgListSeparator, trim( $value ) );
- $prop_labels = $smwgContLang->getPropertyLabels();
- $text .= "\n* [[" . $prop_labels['_PVAL'] . "::$value]]";
- }
- }
- return $text;
- }
-
- function printCreatePropertyForm( $query ) {
- global $wgOut, $wgRequest, $sfgScriptPath;
- global $smwgContLang;
-
- // Cycle through the query values, setting the appropriate
- // local variables.
- $presetPropertyName = str_replace( '_', ' ', $query );
- if ( $presetPropertyName !== '' ) {
- $wgOut->setPageTitle( wfMessage( 'sf-createproperty-with-name', $presetPropertyName)->text() );
- $property_name = $presetPropertyName;
- } else {
- $property_name = $wgRequest->getVal( 'property_name' );
- }
- $property_type = $wgRequest->getVal( 'property_type' );
- $default_form = $wgRequest->getVal( 'default_form' );
- $allowed_values = $wgRequest->getVal( 'values' );
-
- $save_button_text = wfMessage( 'savearticle' )->text();
- $preview_button_text = wfMessage( 'preview' )->text();
-
- $property_name_error_str = '';
- $save_page = $wgRequest->getCheck( 'wpSave' );
- $preview_page = $wgRequest->getCheck( 'wpPreview' );
- if ( $save_page || $preview_page ) {
- $validToken = $this->getUser()->matchEditToken( $wgRequest->getVal( 'csrf' ), 'CreateProperty' );
- if ( !$validToken ) {
- $text = "This appears to be a cross-site request forgery; canceling save.";
- $wgOut->addHTML( $text );
- return;
- }
-
- // Validate property name.
- if ( $property_name === '' ) {
- $property_name_error_str = wfMessage( 'sf_blank_error' )->text();
- } else {
- // Redirect to wiki interface.
- $wgOut->setArticleBodyOnly( true );
- $title = Title::makeTitleSafe( SMW_NS_PROPERTY, $property_name );
- $full_text = self::createPropertyText( $property_type, $default_form, $allowed_values );
- $edit_summary = wfMessage( 'sf_createproperty_editsummary', $property_type)->inContentLanguage()->text();
- $text = SFUtils::printRedirectForm( $title, $full_text, $edit_summary, $save_page, $preview_page, false, false, false, null, null );
- $wgOut->addHTML( $text );
- return;
- }
- }
-
- $datatypeLabels = $smwgContLang->getDatatypeLabels();
- $pageTypeLabel = $datatypeLabels['_wpg'];
- if ( array_key_exists( '_str', $datatypeLabels ) ) {
- $stringTypeLabel = $datatypeLabels['_str'];
- } else {
- $stringTypeLabel = $datatypeLabels['_txt'];
- }
- $numberTypeLabel = $datatypeLabels['_num'];
- $emailTypeLabel = $datatypeLabels['_ema'];
-
- $javascript_text = <<<END
-function toggleDefaultForm(property_type) {
- var default_form_div = document.getElementById("default_form_div");
- if (property_type == '$pageTypeLabel') {
- default_form_div.style.display = "";
- } else {
- default_form_div.style.display = "none";
- }
-}
-
-function toggleAllowedValues(property_type) {
- var allowed_values_div = document.getElementById("allowed_values");
- // Page, String (or Text, for SMW 1.9+), Number, Email - is that a
- // reasonable set of types for which enumerations should be allowed?
- if (property_type == '$pageTypeLabel' ||
- property_type == '$stringTypeLabel' ||
- property_type == '$numberTypeLabel' ||
- property_type == '$emailTypeLabel') {
- allowed_values_div.style.display = "";
- } else {
- allowed_values_div.style.display = "none";
- }
-}
-
-END;
-
- global $wgContLang;
- $mw_namespace_labels = $wgContLang->getNamespaces();
- $name_label = wfMessage( 'sf_createproperty_propname' )->escaped();
- $type_label = wfMessage( 'sf_createproperty_proptype' )->escaped();
- $text = <<<END
- <form action="" method="post">
-
-END;
- $text .= "\n<p>";
- // set 'title' as hidden field, in case there's no URL niceness
- if ( $presetPropertyName === '' ) {
- $text .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
- $text .= "$name_label\n";
- $text .= Html::input ( 'property_name', '', array( 'size' => 25 ) );
- $text .= Html::element( 'span', array( 'style' => "color: red;" ), $property_name_error_str );
- }
- $text .= "\n$type_label\n";
- $select_body = "";
- foreach ( $datatypeLabels as $label ) {
- $select_body .= "\t" . Html::element( 'option', null, $label ) . "\n";
- }
- $text .= Html::rawElement( 'select', array( 'id' => 'property_dropdown', 'name' => 'property_type', 'onChange' => 'toggleDefaultForm(this.value); toggleAllowedValues(this.value);' ), $select_body ) . "\n";
-
- $default_form_input = wfMessage( 'sf_createproperty_linktoform' )->escaped();
- $values_input = wfMessage( 'sf_createproperty_allowedvalsinput' )->escaped();
- $text .= <<<END
- <div id="default_form_div" style="padding: 5px 0 5px 0; margin: 7px 0 7px 0;">
- <p>$default_form_input
- <input size="20" name="default_form" value="" /></p>
- </div>
- <div id="allowed_values" style="margin-bottom: 15px;">
- <p>$values_input</p>
- <p><input size="80" name="values" value="" /></p>
- </div>
-
-END;
-
- $text .= "\t" . Html::hidden( 'csrf', $this->getUser()->getEditToken( 'CreateProperty' ) ) . "\n";
-
- $edit_buttons = "\t" . Html::input( 'wpSave', $save_button_text, 'submit', array( 'id' => 'wpSave' ) );
- $edit_buttons .= "\t" . Html::input( 'wpPreview', $preview_button_text, 'submit', array( 'id' => 'wpPreview' ) );
- $text .= "\t" . Html::rawElement( 'div', array( 'class' => 'editButtons' ), $edit_buttons ) . "\n";
- $text .= "\t</form>\n";
-
- $wgOut->addExtensionStyle( $sfgScriptPath . "/skins/SemanticForms.css" );
- $wgOut->addScript( '<script type="text/javascript">' . $javascript_text . '</script>' );
- $wgOut->addHTML( $text );
- }
-
-}
diff --git a/SemanticForms/specials/SF_CreateTemplate.php b/SemanticForms/specials/SF_CreateTemplate.php
deleted file mode 100644
index 9f360782..00000000
--- a/SemanticForms/specials/SF_CreateTemplate.php
+++ /dev/null
@@ -1,291 +0,0 @@
-<?php
-/**
- * A special page holding a form that allows the user to create a template
- * with semantic fields.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFCreateTemplate extends SpecialPage {
- /**
- * Constructor
- */
- public function __construct() {
- parent::__construct( 'CreateTemplate' );
- }
-
- public function execute( $query ) {
- $this->setHeaders();
- $this->printCreateTemplateForm( $query );
- }
-
- public static function getAllPropertyNames() {
- $all_properties = array();
-
- // Set limit on results - we don't want a massive dropdown
- // of properties, if there are a lot of properties in this wiki.
- // getProperties() functions stop requiring a limit
- $options = new SMWRequestOptions();
- $options->limit = 500;
- $used_properties = SFUtils::getSMWStore()->getPropertiesSpecial( $options );
- if ( $used_properties instanceof SMW\SQLStore\PropertiesCollector ) {
- // SMW 1.9+
- $used_properties = $used_properties->runCollector();
- }
- foreach ( $used_properties as $property ) {
- // Skip over properties that are errors. (This
- // shouldn't happen, but it sometimes does.)
- if ( !method_exists( $property[0], 'getKey' ) ) {
- continue;
- }
- $propName = $property[0]->getKey();
- if ( $propName{0} != '_' ) {
- $all_properties[] = str_replace( '_', ' ', $propName );
- }
- }
-
- $unused_properties = SFUtils::getSMWStore()->getUnusedPropertiesSpecial( $options );
- if ( $unused_properties instanceof SMW\SQLStore\UnusedPropertiesCollector ) {
- // SMW 1.9+
- $unused_properties = $unused_properties->runCollector();
- }
- foreach ( $unused_properties as $property ) {
- // Skip over properties that are errors. (This
- // shouldn't happen, but it sometimes does.)
- if ( !method_exists( $property, 'getKey' ) ) {
- continue;
- }
- $all_properties[] = str_replace( '_' , ' ', $property->getKey() );
- }
-
- // Sort properties list alphabetically, and get unique values
- // (for SQLStore3, getPropertiesSpecial() seems to get unused
- // properties as well).
- sort( $all_properties );
- $all_properties = array_unique( $all_properties );
- return $all_properties;
- }
-
- public static function printPropertiesComboBox( $all_properties, $id, $selected_property = null ) {
- $selectBody = "<option value=\"\"></option>\n";
- foreach ( $all_properties as $prop_name ) {
- $optionAttrs = array( 'value' => $prop_name );
- if ( $selected_property == $prop_name ) { $optionAttrs['selected'] = 'selected'; }
- $selectBody .= Html::element( 'option', $optionAttrs, $prop_name ) . "\n";
- }
- return Html::rawElement( 'select', array( 'id' => "semantic_property_$id", 'name' => "semantic_property_$id", 'class' => 'sfComboBox' ), $selectBody ) . "\n";
- }
-
- public static function printFieldEntryBox( $id, $all_properties, $display = true ) {
- $fieldString = $display ? '' : 'id="starterField" style="display: none"';
- $text = "\t<div class=\"fieldBox\" $fieldString>\n";
- $text .= "\t<p>" . wfMessage( 'sf_createtemplate_fieldname' )->text() . ' ' .
- Html::input( 'name_' . $id, null, 'text',
- array( 'size' => '15' )
- ) . "\n";
- $text .= "\t" . wfMessage( 'sf_createtemplate_displaylabel' )->text() . ' ' .
- Html::input( 'label_' . $id, null, 'text',
- array( 'size' => '15' )
- ) . "\n";
-
- $dropdown_html = self::printPropertiesComboBox( $all_properties, $id );
- $text .= "\t" . wfMessage( 'sf_createtemplate_semanticproperty' )->text() . ' ' . $dropdown_html . "</p>\n";
- $text .= "\t<p>" . '<input type="checkbox" name="is_list_' . $id . '" /> ' . wfMessage( 'sf_createtemplate_fieldislist' )->text() . "\n";
- $text .= ' &#160;&#160;<input type="button" value="' . wfMessage( 'sf_createtemplate_deletefield' )->text() . '" class="deleteField" />' . "\n";
-
- $text .= <<<END
-</p>
-</div>
-
-END;
- return $text;
- }
-
- static function addJavascript() {
- global $wgOut;
-
- SFUtils::addJavascriptAndCSS();
-
- // TODO - this should be in a JS file
- $template_name_error_str = wfMessage( 'sf_blank_error' )->escaped();
- $jsText =<<<END
-<script type="text/javascript">
-var fieldNum = 1;
-function createTemplateAddField() {
- fieldNum++;
- newField = jQuery('#starterField').clone().css('display', '').removeAttr('id');
- newHTML = newField.html().replace(/starter/g, fieldNum);
- newField.html(newHTML);
- newField.find(".deleteField").click( function() {
- // Remove the encompassing div for this instance.
- jQuery(this).closest(".fieldBox")
- .fadeOut('fast', function() { jQuery(this).remove(); });
- });
- var combobox = new sf.select2.combobox();
- combobox.apply($(newField.find('.sfComboBox')));
- jQuery('#fieldsList').append(newField);
-}
-
-function validateCreateTemplateForm() {
- templateName = jQuery('#template_name').val();
- if (templateName === '') {
- scroll(0, 0);
- jQuery('#template_name_p').append(' <font color="red">$template_name_error_str</font>');
- return false;
- } else {
- return true;
- }
-}
-
-jQuery(document).ready(function() {
- jQuery(".deleteField").click( function() {
- // Remove the encompassing div for this instance.
- jQuery(this).closest(".fieldBox")
- .fadeOut('fast', function() { jQuery(this).remove(); });
- });
- jQuery('#createTemplateForm').submit( function() { return validateCreateTemplateForm(); } );
-});
-</script>
-
-END;
- $wgOut->addScript( $jsText );
- }
-
- static function printTemplateStyleButton( $formatStr, $formatMsg, $htmlFieldName, $curSelection ) {
- $attrs = array( 'id' => $formatStr );
- if ( $formatStr === $curSelection ) {
- $attrs['checked'] = true;
- }
- return "\t" . Html::input( $htmlFieldName, $formatStr, 'radio', $attrs ) .
- ' ' . Html::element( 'label', array( 'for' => $formatStr ), wfMessage( $formatMsg )->escaped() ) . "\n";
- }
-
- static function printTemplateStyleInput( $htmlFieldName, $curSelection = null ) {
- if ( !$curSelection ) $curSelection = 'standard';
- $text = "\t<p>" . wfMessage( 'sf_createtemplate_outputformat' )->text() . "\n";
- $text .= self::printTemplateStyleButton( 'standard', 'sf_createtemplate_standardformat', $htmlFieldName, $curSelection );
- $text .= self::printTemplateStyleButton( 'infobox', 'sf_createtemplate_infoboxformat', $htmlFieldName, $curSelection );
- $text .= self::printTemplateStyleButton( 'plain', 'sf_createtemplate_plainformat', $htmlFieldName, $curSelection );
- $text .= self::printTemplateStyleButton( 'sections', 'sf_createtemplate_sectionsformat', $htmlFieldName, $curSelection );
- $text .= "</p>\n";
- return $text;
- }
-
- function printCreateTemplateForm( $query ) {
- global $wgOut, $wgRequest, $sfgScriptPath;
-
- if ( !is_null( $query ) ) {
- $presetTemplateName = str_replace( '_', ' ', $query );
- $wgOut->setPageTitle( wfMessage( 'sf-createtemplate-with-name', $presetTemplateName )->text() );
- $template_name = $presetTemplateName;
- } else {
- $presetTemplateName = null;
- $template_name = $wgRequest->getVal( 'template_name' );
- }
-
- self::addJavascript();
-
- $text = '';
- $save_page = $wgRequest->getCheck( 'wpSave' );
- $preview_page = $wgRequest->getCheck( 'wpPreview' );
- if ( $save_page || $preview_page ) {
- $validToken = $this->getUser()->matchEditToken( $wgRequest->getVal( 'csrf' ), 'CreateTemplate' );
- if ( !$validToken ) {
- $text = "This appears to be a cross-site request forgery; canceling save.";
- $wgOut->addHTML( $text );
- return;
- }
-
- $fields = array();
- // Cycle through the query values, setting the
- // appropriate local variables.
- foreach ( $wgRequest->getValues() as $var => $val ) {
- $var_elements = explode( "_", $var );
- // we only care about query variables of the form "a_b"
- if ( count( $var_elements ) != 2 )
- continue;
- list ( $field_field, $id ) = $var_elements;
- if ( $field_field == 'name' && $id != 'starter' ) {
- $field = SFTemplateField::create( $val, $wgRequest->getVal( 'label_' . $id ), $wgRequest->getVal( 'semantic_property_' . $id ), $wgRequest->getCheck( 'is_list_' . $id ) );
- $fields[] = $field;
- }
- }
-
- // Assemble the template text, and submit it as a wiki
- // page.
- $wgOut->setArticleBodyOnly( true );
- $title = Title::makeTitleSafe( NS_TEMPLATE, $template_name );
- $category = $wgRequest->getVal( 'category' );
- $aggregating_property = $wgRequest->getVal( 'semantic_property_aggregation' );
- $aggregation_label = $wgRequest->getVal( 'aggregation_label' );
- $template_format = $wgRequest->getVal( 'template_format' );
- $sfTemplate = new SFTemplate( $template_name, $fields );
- $sfTemplate->setCategoryName( $category );
- $sfTemplate->setAggregatingInfo( $aggregating_property, $aggregation_label );
- $sfTemplate->setFormat( $template_format );
- $full_text = $sfTemplate->createText();
-
- $text = SFUtils::printRedirectForm( $title, $full_text, "", $save_page, $preview_page, false, false, false, null, null );
- $wgOut->addHTML( $text );
- return;
- }
-
- $text .= ' <form id="createTemplateForm" action="" method="post">' . "\n";
- if ( is_null( $presetTemplateName ) ) {
- // Set 'title' field, in case there's no URL niceness
- $text .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
- $text .= "\t<p id=\"template_name_p\">" . wfMessage( 'sf_createtemplate_namelabel' )->escaped() . ' <input size="25" id="template_name" name="template_name" /></p>' . "\n";
- }
- $text .= "\t<p>" . wfMessage( 'sf_createtemplate_categorylabel' )->escaped() . ' <input size="25" name="category" /></p>' . "\n";
- $text .= "\t<fieldset>\n";
- $text .= "\t" . Html::element( 'legend', null, wfMessage( 'sf_createtemplate_templatefields' )->text() ) . "\n";
- $text .= "\t" . Html::element( 'p', null, wfMessage( 'sf_createtemplate_fieldsdesc' )->text() ) . "\n";
-
- $all_properties = self::getAllPropertyNames();
- $text .= '<div id="fieldsList">' . "\n";
- $text .= self::printFieldEntryBox( "1", $all_properties );
- $text .= self::printFieldEntryBox( "starter", $all_properties, false );
- $text .= "</div>\n";
-
- $add_field_button = Html::input(
- null,
- wfMessage( 'sf_createtemplate_addfield' )->text(),
- 'button',
- array( 'onclick' => "createTemplateAddField()" )
- );
- $text .= Html::rawElement( 'p', null, $add_field_button ) . "\n";
- $text .= "\t</fieldset>\n";
- $text .= "\t<fieldset>\n";
- $text .= "\t" . Html::element( 'legend', null, wfMessage( 'sf_createtemplate_aggregation' )->text() ) . "\n";
- $text .= "\t" . Html::element( 'p', null, wfMessage( 'sf_createtemplate_aggregationdesc' )->text() ) . "\n";
- $text .= "\t<p>" . wfMessage( 'sf_createtemplate_semanticproperty' )->escaped() . ' ' .
- self::printPropertiesComboBox( $all_properties, "aggregation" ) . "</p>\n";
- $text .= "\t<p>" . wfMessage( 'sf_createtemplate_aggregationlabel' )->escaped() . ' ' .
- Html::input( 'aggregation_label', null, 'text',
- array( 'size' => '25' ) ) .
- "</p>\n";
- $text .= "\t</fieldset>\n";
- $text .= self::printTemplateStyleInput( 'template_format' );
-
- $text .= "\t" . Html::hidden( 'csrf', $this->getUser()->getEditToken( 'CreateTemplate' ) ) . "\n";
-
- $save_button_text = wfMessage( 'savearticle' )->escaped();
- $preview_button_text = wfMessage( 'preview' )->escaped();
- $text .= <<<END
- <div class="editButtons">
- <input type="submit" id="wpSave" name="wpSave" value="$save_button_text" />
- <input type="submit" id="wpPreview" name="wpPreview" value="$preview_button_text" />
- </div>
- </form>
-
-END;
-
- $wgOut->addExtensionStyle( $sfgScriptPath . "/skins/SemanticForms.css" );
- $wgOut->addHTML( $text );
- }
-}
diff --git a/SemanticForms/specials/SF_FormEdit.php b/SemanticForms/specials/SF_FormEdit.php
deleted file mode 100644
index 1a27020e..00000000
--- a/SemanticForms/specials/SF_FormEdit.php
+++ /dev/null
@@ -1,185 +0,0 @@
-<?php
-/**
- * Displays a pre-defined form for either creating a new page or editing an
- * existing one.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFFormEdit extends SpecialPage {
-
- public $mTarget;
- public $mForm;
- public $mError;
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'FormEdit' );
- }
-
- function execute( $query ) {
-
- wfProfileIn( __METHOD__ );
-
- $this->setHeaders();
-
- $this->mForm = $this->getRequest()->getText( 'form' );
- $this->mTarget = $this->getRequest()->getText( 'target' );
-
- // if query string did not contain these variables, try the URL
- if ( !$this->mForm && !$this->mTarget ) {
- $queryparts = explode( '/', $query, 2 );
- $this->mForm = isset( $queryparts[ 0 ] ) ? $queryparts[ 0 ] : '';
- $this->mTarget = isset( $queryparts[ 1 ] ) ? $queryparts[ 1 ] : '';
- $this->mTarget = str_replace( '_', ' ', $this->mTarget );
- }
-
- $alt_forms = $this->getRequest()->getArray( 'alt_form' );
-
- self::printForm( $this->mForm, $this->mTarget, $alt_forms );
-
- wfProfileOut( __METHOD__ );
- }
-
- static function printAltFormsList( $alt_forms, $target_name ) {
- $text = "";
- $fe = SpecialPageFactory::getPage( 'FormEdit' );
- $fe_url = $fe->getTitle()->getFullURL();
- $i = 0;
- foreach ( $alt_forms as $alt_form ) {
- if ( $i++ > 0 ) {
- $text .= ', ';
- }
- $text .= "<a href=\"$fe_url/$alt_form/$target_name\">" . str_replace( '_', ' ', $alt_form ) . '</a>';
- }
- return $text;
- }
-
- static function printForm( &$form_name, &$targetName, $alt_forms = array( ) ) {
- global $wgOut, $wgRequest;
-
- $module = new SFAutoeditAPI( new ApiMain(), 'sfautoedit' );
- $module->setOption( 'form', $form_name );
- $module->setOption( 'target', $targetName );
-
- if ( $wgRequest->getCheck( 'wpSave' ) || $wgRequest->getCheck( 'wpPreview' ) || $wgRequest->getCheck( 'wpDiff' ) ) {
- // If the page was submitted, form data should be
- // complete => do not preload (unless it's a partial
- // form).
- if ( $wgRequest->getCheck( 'partial' ) ) {
- $module->setOption( 'preload', true );
- } else {
- $module->setOption( 'preload', false );
- }
- } else if ( !empty( $targetName ) && Title::newFromText( $targetName )->exists ( ) ) {
- // If target page exists, do not overwrite it with
- // preload data; just preload the page's data.
- $module->setOption( 'preload', true );
- } else if ( $wgRequest->getCheck( 'preload' ) ) {
- // if page does not exist and preload parameter is set, pass that on
- $module->setOption( 'preload', $wgRequest->getText( 'preload' ) );
- } else {
- // nothing set, so do not set preload
- }
-
- $module->execute();
-
- $text = '';
-
- // if action was successful and action was a Save, return
- if ( $module->getStatus() === 200 ) {
- if ( $module->getAction() === SFAutoeditAPI::ACTION_SAVE ) {
- return;
- }
- } else {
-
- $resultData = $module->getResultData();
-
- if ( array_key_exists( 'errors', $resultData ) ) {
-
- foreach ($resultData['errors'] as $error) {
- // FIXME: This should probably not be hard-coded to WARNING but put into a setting
- if ( $error[ 'level' ] <= SFAutoeditAPI::WARNING ) {
- $text .= Html::rawElement( 'p', array( 'class' => 'error' ), $error[ 'message' ] ) . "\n";
- }
- }
- }
- }
-
- // override the default title for this page if a title was specified in the form
- $result = $module->getOptions();
- $targetTitle = Title::newFromText( $result[ 'target' ] );
-
-
- // set page title depending on whether an explicit title was specified in the form definition
- if ( array_key_exists( 'formtitle', $result ) ) {
-
- // set page title depending on whether the target page exists
- if ( empty( $targetName ) ) {
- $pageTitle = $result[ 'formtitle' ];
- } else {
- $pageTitle = $result[ 'formtitle' ] . ': ' . $targetName;
- }
- } elseif ( $result[ 'form' ] !== '' ) {
- // set page title depending on whether the target page exists
- if ( empty( $targetName ) ) {
- $pageTitle = wfMessage( 'sf_formedit_createtitlenotarget', $result[ 'form' ] )->text();
- } elseif ( $targetTitle->exists() ) {
- $pageTitle = wfMessage( 'sf_formedit_edittitle', $result[ 'form' ], $targetName )->text();
- } else {
- $pageTitle = wfMessage( 'sf_formedit_createtitle', $result[ 'form' ], $targetName )->text();
- }
- } elseif ( count( $alt_forms ) > 0 ) {
- // We use the 'creating' message here, instead of
- // 'sf_formedit_createtitlenotarget', to differentiate
- // between a page with no (default) form, and one with
- // no target; in English they'll show up as
- // "Creating ..." and "Create ...", respectively.
- // Does this make any difference? Who knows.
- $pageTitle = wfMessage( 'creating', $targetName )->text();
- } elseif ( $result[ 'form' ] == '' ) { //FIXME: This looks weird; a simple else should be enough, right?
- // display error message if the form is not specified in the URL
- $pageTitle = wfMessage( 'formedit' )->text();
- $text .= Html::element( 'p', array( 'class' => 'error' ), wfMessage( 'sf_formedit_badurl' )->text() ) . "\n";
- $wgOut->addHTML( $text );
- }
-
- $wgOut->setPageTitle( $pageTitle );
- if ( count( $alt_forms ) > 0 ) {
- $text .= '<div class="infoMessage">';
- if ( $result[ 'form' ] != '' ) {
- $text .= wfMessage( 'sf_formedit_altforms' )->escaped();
- } else {
- $text .= wfMessage( 'sf_formedit_altformsonly' )->escaped();
- }
- $text .= ' ' . self::printAltFormsList( $alt_forms, $targetName );
- $text .= "</div>\n";
- }
-
- $text .= '<form name="createbox" id="sfForm" method="post" class="createbox">';
- $pre_form_html = '';
- wfRunHooks( 'sfHTMLBeforeForm', array( &$targetTitle, &$pre_form_html ) );
- $text .= $pre_form_html;
- if ( isset( $result[ 'formHTML' ] ) ) {
- $text .= $result[ 'formHTML' ];
- }
-
- SFUtils::addJavascriptAndCSS();
-
- if ( isset( $result[ 'formJS' ] ) ) {
- $wgOut->addScript( ' <script type="text/javascript">' . "\n$result[formJS]\n" . '</script>' . "\n" );
- }
-
- $wgOut->addHTML( $text );
-
- return null;
- }
-
-}
diff --git a/SemanticForms/specials/SF_FormStart.php b/SemanticForms/specials/SF_FormStart.php
deleted file mode 100644
index 782dcf59..00000000
--- a/SemanticForms/specials/SF_FormStart.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?php
-/**
- * Displays a form for entering the title of a page, which then redirects
- * to the form for creating/editing the page.
- *
- * @author Yaron Koren
- * @author Jeffrey Stuckman
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFFormStart extends SpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'FormStart' );
- }
-
- function execute( $query ) {
- global $wgOut, $wgRequest;
-
- $this->setHeaders();
-
- $form_name = $wgRequest->getVal( 'form' );
- $target_namespace = $wgRequest->getVal( 'namespace' );
- $super_page = $wgRequest->getVal( 'super_page' );
- $params = $wgRequest->getVal( 'params' );
-
- // If the query string did not contain a form name, try the URL
- if ( ! $form_name ) {
- $queryparts = explode( '/', $query, 2 );
- $form_name = isset( $queryparts[0] ) ? $queryparts[0] : '';
- // If a target was specified, it means we should
- // redirect to 'FormEdit' for this target page.
- if ( isset( $queryparts[1] ) ) {
- $target_name = $queryparts[1];
- $this->doRedirect( $form_name, $target_name, $params );
- }
-
- // Get namespace from the URL, if it's there.
- if ( $namespace_label_loc = strpos( $form_name, "/Namespace:" ) ) {
- $target_namespace = substr( $form_name, $namespace_label_loc + 11 );
- $form_name = substr( $form_name, 0, $namespace_label_loc );
- }
- }
-
- // Get title of form.
- $form_title = Title::makeTitleSafe( SF_NS_FORM, $form_name );
-
- // Handle submission of this form.
- $form_submitted = $wgRequest->getCheck( 'page_name' );
- if ( $form_submitted ) {
- $page_name = $wgRequest->getVal( 'page_name' );
- // This form can be used to create a sub-page for an
- // existing page
- if ( !is_null( $super_page ) && $super_page !== '' ) {
- $page_name = "$super_page/$page_name";
- }
-
- if ( $page_name !== '' ) {
- // Append the namespace prefix to the page name,
- // if this namespace was not already entered.
- if ( strpos( $page_name, $target_namespace . ':' ) === false && !is_null( $target_namespace ) )
- $page_name = $target_namespace . ':' . $page_name;
- // If there was no page title, it's probably an
- // invalid page name, containing forbidden
- // characters - in that case, display an error
- // message.
- $page_title = Title::newFromText( $page_name );
- if ( !$page_title ) {
- $wgOut->addHTML( wfMessage( 'sf_formstart_badtitle', $page_name )->escaped() );
- return;
- } else {
- $this->doRedirect( $form_name, $page_name, $params );
- return;
- }
- }
- }
-
- if ( ( !$form_title || !$form_title->exists() ) && ( $form_name !== '' ) ) {
- $text = Html::rawElement( 'p', array( 'class' => 'error' ), wfMessage( 'sf_formstart_badform', SFUtils::linkText( SF_NS_FORM, $form_name ) )->parse() ) . "\n";
- } else {
- if ( $form_name === '' ) {
- $description = wfMessage( 'sf_formstart_noform_docu', $form_name )->escaped();
- }
- else {
- $description = wfMessage( 'sf_formstart_docu', $form_name )->escaped();
- }
-
- $text = <<<END
- <form action="" method="post">
- <p>$description</p>
- <p><input type="text" size="40" name="page_name" />
-
-END;
- // If no form was specified, display a dropdown letting
- // the user choose the form.
- if ( $form_name === '' )
- $text .= SFUtils::formDropdownHTML();
-
- $text .= "\t</p>\n";
- $text .= Html::hidden( 'namespace', $target_namespace );
- $text .= Html::hidden( 'super_page', $super_page );
- $text .= Html::hidden( 'params', $params );
- $text .= "\n\t" . Html::input( null, wfMessage( 'sf_formstart_createoredit' )->text(), 'submit' ) . "\n";
- $text .= "\t</form>\n";
- }
- $wgOut->addHTML( $text );
- }
-
- /**
- * Helper function - returns a URL that includes Special:FormEdit.
- */
- static function getFormEditURL( $formName, $targetName) {
- $fe = SpecialPageFactory::getPage( 'FormEdit' );
- // Special handling for forms whose name contains a slash.
- if ( strpos( $formName, '/' ) !== false ) {
- return $fe->getTitle()->getLocalURL( array( 'form' => $formName, 'target' => $targetName ) );
- }
- return $fe->getTitle( "$formName/$targetName" )->getLocalURL();
- }
-
- function doRedirect( $form_name, $page_name, $params ) {
- global $wgOut;
-
- $page_title = Title::newFromText( $page_name );
- if ( $page_title->exists() ) {
- // It exists - see if page is a redirect; if
- // it is, edit the target page instead.
- $article = new Article( $page_title, 0 );
- $article->loadContent();
- $redirect_title = Title::newFromRedirect( $article->fetchContent() );
- if ( $redirect_title != null ) {
- $page_title = $redirect_title;
- $page_name = SFUtils::titleURLString( $redirect_title );
- }
- // HACK - if this is the default form for
- // this page, send to the regular 'formedit'
- // tab page; otherwise, send to the 'Special:FormEdit'
- // page, with the form name hardcoded.
- // Is this logic necessary? Or should we just
- // out-guess the user and always send to the
- // standard form-edit page, with the 'correct' form?
- $default_forms = SFFormLinker::getDefaultFormsForPage( $page_title );
- if ( count( $default_forms ) > 0 ) {
- $default_form_name = $default_forms[0];
- } else {
- $default_form_name = null;
- }
- if ( $form_name == $default_form_name ) {
- $redirect_url = $page_title->getLocalURL( 'action=formedit' );
- } else {
- $redirect_url = self::getFormEditURL( $form_name, $page_name );
- }
- } else {
- $redirect_url = self::getFormEditURL( $form_name, $page_name );
- // Of all the request values, send on to 'FormEdit'
- // only 'preload' and specific form fields - we can
- // identify the latter because they show up as arrays.
- foreach ( $_REQUEST as $key => $val ) {
- if ( is_array( $val ) ) {
- $redirect_url .= ( strpos( $redirect_url, '?' ) > - 1 ) ? '&' : '?';
- // Re-add the key (i.e. the template
- // name), so we can make a nice query
- // string snippet out of the whole
- // thing.
- $wrapperArray = array( $key => $val );
- $redirect_url .= urldecode( http_build_query( $wrapperArray ) );
- } elseif ( $key == 'preload' ) {
- $redirect_url .= ( strpos( $redirect_url, '?' ) > - 1 ) ? '&' : '?';
- $redirect_url .= "$key=$val";
- }
- }
- }
-
- if ( !is_null( $params ) && $params !== '' ) {
- $redirect_url .= ( strpos( $redirect_url, '?' ) > - 1 ) ? '&' : '?';
- $redirect_url .= $params;
- }
-
- $wgOut->setArticleBodyOnly( true );
- // Show "loading" animated image while people wait for the
- // redirect.
- global $sfgScriptPath;
- $text = <<<END
- <p style="position: absolute; left: 45%; top: 45%;">
- <img src="$sfgScriptPath/skins/loading.gif" />
- </p>
- <meta http-equiv="refresh" content="0; url=$redirect_url" />
-
-END;
- $wgOut->addHTML( $text );
- return;
- }
-
-}
diff --git a/SemanticForms/specials/SF_Forms.php b/SemanticForms/specials/SF_Forms.php
deleted file mode 100644
index 80abeef8..00000000
--- a/SemanticForms/specials/SF_Forms.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Shows list of all forms on the site.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFForms extends SpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'Forms' );
- }
-
- function execute( $query ) {
- $this->setHeaders();
- list( $limit, $offset ) = wfCheckLimits();
- $rep = new FormsPage();
- return $rep->execute( $query );
- }
-}
-
-/**
- * @ingroup SFSpecialPages
- */
-class FormsPage extends QueryPage {
- public function __construct( $name = 'Forms' ) {
- parent::__construct( $name );
- }
-
- function getName() {
- return "Forms";
- }
-
- function isExpensive() { return false; }
-
- function isSyndicated() { return false; }
-
- function getPageHeader() {
- $header = '<p>' . wfMessage( 'sf_forms_docu' )->text() . "</p><br />\n";
- return $header;
- }
-
- function getPageFooter() {
- }
-
- function getQueryInfo() {
- return array(
- 'tables' => array( 'page' ),
- 'fields' => array( 'page_title AS title', 'page_title AS value' ),
- 'conds' => array( 'page_namespace' => SF_NS_FORM, 'page_is_redirect' => 0 )
- );
- }
-
- function sortDescending() {
- return false;
- }
-
- function formatResult( $skin, $result ) {
- $title = Title::makeTitle( SF_NS_FORM, $result->value );
- return Linker::link( $title, htmlspecialchars( $title->getText() ) );
- }
-}
diff --git a/SemanticForms/specials/SF_RunQuery.php b/SemanticForms/specials/SF_RunQuery.php
deleted file mode 100644
index fbe103b3..00000000
--- a/SemanticForms/specials/SF_RunQuery.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-/**
- * Displays a pre-defined form that a user can run a query with.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFRunQuery extends IncludableSpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'RunQuery' );
- }
-
- function execute( $query ) {
- global $wgRequest;
-
- if ( !$this->including() ) {
- $this->setHeaders();
- }
- $form_name = $this->including() ? $query : $wgRequest->getVal( 'form', $query );
-
- $this->printPage( $form_name, $this->including() );
- }
-
- function printPage( $form_name, $embedded = false ) {
- global $wgOut, $wgRequest, $sfgFormPrinter, $wgParser, $sfgRunQueryFormAtTop;
- global $wgUser;
-
- // Get contents of form-definition page.
- $form_title = Title::makeTitleSafe( SF_NS_FORM, $form_name );
-
- if ( !$form_title || !$form_title->exists() ) {
- if ( $form_name === '' ) {
- $text = Html::element( 'p', array( 'class' => 'error' ), wfMessage( 'sf_runquery_badurl' )->text() ) . "\n";
- } else {
- $text = Html::rawElement( 'p', array( 'class' => 'error' ),
- wfMessage( 'sf_formstart_badform', SFUtils::linkText( SF_NS_FORM, $form_name ) )->parse() ) . "\n";
- }
- $wgOut->addHTML( $text );
- return;
- }
-
- // Initialize variables.
- $form_definition = SFUtils::getPageText( $form_title );
- if ( $embedded ) {
- $run_query = false;
- $content = null;
- $raw = false;
- } else {
- $run_query = $wgRequest->getCheck( 'wpRunQuery' );
- $content = $wgRequest->getVal( 'wpTextbox1' );
- $raw = $wgRequest->getBool( 'raw', false );
- }
- $form_submitted = ( $run_query );
- if ( $raw ) {
- $wgOut->setArticleBodyOnly( true );
- }
- // If user already made some action, ignore the edited
- // page and just get data from the query string.
- if ( !$embedded && $wgRequest->getVal( 'query' ) == 'true' ) {
- $edit_content = null;
- $is_text_source = false;
- } elseif ( $content != null ) {
- $edit_content = $content;
- $is_text_source = true;
- } else {
- $edit_content = null;
- $is_text_source = true;
- }
- list ( $form_text, $javascript_text, $data_text, $form_page_title ) =
- $sfgFormPrinter->formHTML( $form_definition, $form_submitted, $is_text_source, $form_title->getArticleID(), $edit_content, null, null, true, $embedded );
- $text = "";
-
- // Get the text of the results.
- $resultsText = '';
-
- if ( $form_submitted ) {
-
- // @TODO - fix RunQuery's parsing so that this check
- // isn't needed.
- if ( $wgParser->getOutput() == null ) {
- $headItems = array();
- } else {
- $headItems = $wgParser->getOutput()->getHeadItems();
- }
- foreach ( $headItems as $key => $item ) {
- $wgOut->addHeadItem( $key, "\t\t" . $item . "\n" );
- }
-
- $wgParser->mOptions = ParserOptions::newFromUser( $wgUser );
- $resultsText = $wgParser->parse( $data_text, $this->getTitle(), $wgParser->mOptions )->getText();
- }
-
- // Get the full text of the form.
- $fullFormText = '';
- $additionalQueryHeader = '';
- $dividerText = '';
- if ( !$raw ) {
- // Create the "additional query" header, and the
- // divider text - one of these (depending on whether
- // the query form is at the top or bottom) is displayed
- // if the form has already been submitted.
- if ( $form_submitted ) {
- $additionalQueryHeader = "\n" . Html::element( 'h2', null, wfMessage( 'sf_runquery_additionalquery' )->text() ) . "\n";
- $dividerText = "\n<hr style=\"margin: 15px 0;\" />\n";
- }
- $action = htmlspecialchars( $this->getTitle( $form_name )->getLocalURL() );
- $fullFormText .= <<<END
- <form id="sfForm" name="createbox" action="$action" method="post" class="createbox">
-
-END;
- $fullFormText .= Html::hidden( 'query', 'true' );
- $fullFormText .= $form_text;
- }
-
- // Either don't display a query form at all, or display the
- // query form at the top, and the results at the bottom, or the
- // other way around, depending on the settings.
- if ( $wgRequest->getVal( 'additionalquery' ) == 'false' ) {
- $text .= $resultsText;
- } elseif ( $sfgRunQueryFormAtTop ) {
- $text .= Html::openElement( 'div', array( 'class' => 'sf-runquery-formcontent' ) );
- $text .= $fullFormText;
- $text .= $dividerText;
- $text .= Html::closeElement( 'div' );
- $text .= $resultsText;
- } else {
- $text .= $resultsText;
- $text .= Html::openElement( 'div', array( 'class' => 'sf-runquery-formcontent' ) );
- $text .= $additionalQueryHeader;
- $text .= $fullFormText;
- $text .= Html::closeElement( 'div' );
- }
-
- if ( $embedded ) {
- $text = "<div class='runQueryEmbedded'>$text</div>";
- }
-
- // Armor against doBlockLevels()
- $text = preg_replace( '/^ +/m', '', $text );
-
- // Now write everything to the screen.
- $wgOut->addHTML( $text );
- SFUtils::addJavascriptAndCSS( $embedded ? $wgParser : null );
- $script = "\t\t" . '<script type="text/javascript">' . "\n" . $javascript_text . '</script>' . "\n";
- if ( $embedded ) {
- $wgParser->getOutput()->addHeadItem( $script );
- } else {
- $wgOut->addScript( $script );
- $po = $wgParser->getOutput();
- if ( $po ) {
- // addParserOutputMetadata was introduced in 1.24 when addParserOutputNoText was deprecated
- if( method_exists( $wgOut, 'addParserOutputMetadata' ) ){
- $wgOut->addParserOutputMetadata( $po );
- } else {
- $wgOut->addParserOutputNoText( $po );
- }
- }
- }
-
- // Finally, set the page title - previously, this had to be
- // called after addParserOutputNoText() for it to take effect;
- // now the order doesn't matter.
- if ( !$embedded ) {
- if ( $form_page_title != null ) {
- $wgOut->setPageTitle( $form_page_title );
- } else {
- $s = wfMessage( 'sf_runquery_title', $form_title->getText() )->text();
- $wgOut->setPageTitle( $s );
- }
- }
- }
-}
diff --git a/SemanticForms/specials/SF_Templates.php b/SemanticForms/specials/SF_Templates.php
deleted file mode 100644
index 308b275c..00000000
--- a/SemanticForms/specials/SF_Templates.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Shows list of all templates on the site.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFTemplates extends SpecialPage {
-
- /**
- * Constructor
- */
- function __construct() {
- parent::__construct( 'Templates' );
- }
-
- function execute( $query ) {
- $this->setHeaders();
- list( $limit, $offset ) = wfCheckLimits();
- $rep = new TemplatesPage();
- $rep->execute( $query );
- }
-}
-
-/**
- * @ingroup SFSpecialPages
- */
-class TemplatesPage extends QueryPage {
-
- public function __construct( $name = 'Templates' ) {
- parent::__construct( $name );
- }
-
- function getName() {
- return "Templates";
- }
-
- function isExpensive() { return false; }
-
- function isSyndicated() { return false; }
-
- function getPageHeader() {
- $header = '<p>' . wfMessage( 'sf_templates_docu' )->text() . "</p><br />\n";
- return $header;
- }
-
- function getPageFooter() {
- }
-
- function getQueryInfo() {
- return array(
- 'tables' => array( 'page' ),
- 'fields' => array( 'page_title AS title', 'page_title AS value' ),
- 'conds' => array( 'page_namespace' => NS_TEMPLATE )
- );
- }
-
- function sortDescending() {
- return false;
- }
-
- function getCategoryDefinedByTemplate( $templateTitle ) {
- global $wgContLang;
-
- $templateText = SFUtils::getPageText( $templateTitle );
- $cat_ns_name = $wgContLang->getNsText( NS_TEMPLATE );
- if ( preg_match_all( "/\[\[(Category|$cat_ns_name):([^\]]*)\]\]/", $templateText, $matches ) ) {
- // Get the last match - if there's more than one
- // category tag, there's a good chance that the last
- // one will be the relevant one - the others are
- // probably part of inline queries.
- $categoryName = trim( end( $matches[2] ) );
- // If there's a pipe, remove it and anything after it.
- $locationOfPipe = strpos( $categoryName, '|' );
- if ( $locationOfPipe !== false ) {
- $categoryName = substr( $categoryName, 0, $locationOfPipe );
- }
- return $categoryName;
- }
- return "";
- }
-
- function formatResult( $skin, $result ) {
- $title = Title::makeTitle( NS_TEMPLATE, $result->value );
- $text = Linker::link( $title, htmlspecialchars( $title->getText() ) );
- $category = $this->getCategoryDefinedByTemplate( $title );
- if ( $category !== '' ) {
- $text .= ' ' . wfMessage(
- 'sf_templates_definescat',
- SFUtils::linkText( NS_CATEGORY, $category )
- )->parse();
- }
- return $text;
- }
-}
diff --git a/SemanticForms/specials/SF_UploadWindow.php b/SemanticForms/specials/SF_UploadWindow.php
deleted file mode 100644
index cb4ee05c..00000000
--- a/SemanticForms/specials/SF_UploadWindow.php
+++ /dev/null
@@ -1,1080 +0,0 @@
-<?php
-/**
- * SFUploadWindow - used for uploading files from within a form.
- * This class is nearly identical to MediaWiki's SpecialUpload class, with
- * a few changes to remove skin CSS and HTML, and to populate the relevant
- * field in the form with the name of the uploaded form.
- *
- * @author Yaron Koren
- * @file
- * @ingroup SF
- */
-
-/**
- * @ingroup SFSpecialPages
- */
-class SFUploadWindow extends UnlistedSpecialPage {
- /**
- * Constructor : initialise object
- * Get data POSTed through the form and assign them to the object
- * @param WebRequest $request Data posted.
- */
- public function __construct( $request = null ) {
- parent::__construct( 'UploadWindow', 'upload' );
- $this->loadRequest( is_null( $request ) ? $this->getRequest() : $request );
- }
-
- /** Misc variables **/
- public $mRequest; // The WebRequest or FauxRequest this form is supposed to handle
- public $mSourceType;
- public $mUpload;
- public $mLocalFile;
- public $mUploadClicked;
-
- protected $mTextTop;
- protected $mTextAfterSummary;
-
- /** User input variables from the "description" section **/
- public $mDesiredDestName; // The requested target file name
- public $mComment;
- public $mLicense;
-
- /** User input variables from the root section **/
- public $mIgnoreWarning;
- public $mWatchThis;
- public $mCopyrightStatus;
- public $mCopyrightSource;
-
- /** Hidden variables **/
- public $mForReUpload; // The user followed an "overwrite this file" link
- public $mCancelUpload; // The user clicked "Cancel and return to upload form" button
- public $mTokenOk;
-
- /** used by Semantic Forms **/
- public $mInputID;
- public $mDelimiter;
-
- /**
- * Initialize instance variables from request and create an Upload handler
- *
- * @param WebRequest $request The request to extract variables from
- */
- protected function loadRequest( $request ) {
- $this->mRequest = $request;
- $this->mSourceType = $request->getVal( 'wpSourceType', 'file' );
- $this->mUpload = UploadBase::createFromRequest( $request );
- $this->mUploadClicked = $request->wasPosted()
- && ( $request->getCheck( 'wpUpload' )
- || $request->getCheck( 'wpUploadIgnoreWarning' ) );
-
- // Guess the desired name from the filename if not provided
- $this->mDesiredDestName = $request->getText( 'wpDestFile' );
- if ( !$this->mDesiredDestName )
- $this->mDesiredDestName = $request->getText( 'wpUploadFile' );
- $this->mComment = $request->getText( 'wpUploadDescription' );
- $this->mLicense = $request->getText( 'wpLicense' );
-
-
- $this->mDestWarningAck = $request->getText( 'wpDestFileWarningAck' );
- $this->mIgnoreWarning = $request->getCheck( 'wpIgnoreWarning' )
- || $request->getCheck( 'wpUploadIgnoreWarning' );
- $this->mWatchthis = $request->getBool( 'wpWatchthis' );
- $this->mCopyrightStatus = $request->getText( 'wpUploadCopyStatus' );
- $this->mCopyrightSource = $request->getText( 'wpUploadSource' );
-
-
- $this->mForReUpload = $request->getBool( 'wpForReUpload' ); // updating a file
- $this->mCancelUpload = $request->getCheck( 'wpCancelUpload' )
- || $request->getCheck( 'wpReUpload' ); // b/w compat
-
- // If it was posted check for the token (no remote POST'ing with user credentials)
- $token = $request->getVal( 'wpEditToken' );
- if ( $this->mSourceType == 'file' && $token == null ) {
- // Skip token check for file uploads as that can't be faked via JS...
- // Some client-side tools don't expect to need to send wpEditToken
- // with their submissions, as that was new in 1.16.
- $this->mTokenOk = true;
- } else {
- $this->mTokenOk = $this->getUser()->matchEditToken( $token );
- }
- $this->mInputID = $request->getText( 'sfInputID' );
- $this->mDelimiter = $request->getText( 'sfDelimiter' );
- $this->uploadFormTextTop = '';
- $this->uploadFormTextAfterSummary = '';
- }
-
- /**
- * Special page entry point
- */
- public function execute( $par ) {
- // Only output the body of the page.
- $this->getOutput()->setArticleBodyOnly( true );
- // This line is needed to get around Squid caching.
- $this->getOutput()->sendCacheControl();
-
- $this->setHeaders();
- $this->outputHeader();
-
- # Check uploading enabled
- if ( !UploadBase::isEnabled() ) {
- throw new ErrorPageError( 'uploaddisabled', 'uploaddisabledtext' );
- }
-
- # Check permissions
- global $wgGroupPermissions;
- if ( !$this->getUser()->isAllowed( 'upload' ) ) {
- if ( !$this->getUser()->isLoggedIn() && ( $wgGroupPermissions['user']['upload']
- || $wgGroupPermissions['autoconfirmed']['upload'] ) ) {
- // Custom message if logged-in users without any special rights can upload
- throw new ErrorPageError( 'uploadnologin', 'uploadnologintext' );
- } else {
- throw new PermissionsError( 'upload' );
- }
- }
-
- # Check blocks
- if ( $this->getUser()->isBlocked() ) {
- throw new UserBlockedError( $this->getUser()->getBlock() );
- }
-
- # Check whether we actually want to allow changing stuff
- if ( wfReadOnly() ) {
- throw new ReadOnlyError();
- }
-
- # Unsave the temporary file in case this was a cancelled upload
- if ( $this->mCancelUpload ) {
- if ( !$this->unsaveUploadedFile() )
- # Something went wrong, so unsaveUploadedFile showed a warning
- return;
- }
-
- # Process upload or show a form
- if ( $this->mTokenOk && !$this->mCancelUpload
- && ( $this->mUpload && $this->mUploadClicked ) ) {
- $this->processUpload();
- } else {
- # Backwards compatibility hook
- if( !wfRunHooks( 'UploadForm:initial', array( &$this ) ) ) {
- wfDebug( "Hook 'UploadForm:initial' broke output of the upload form" );
- return;
- }
-
- $this->showUploadForm( $this->getUploadForm() );
- }
-
- # Cleanup
- if ( $this->mUpload )
- $this->mUpload->cleanupTempFile();
- }
-
- /**
- * Show the main upload form and optionally add the session key to the
- * output. This hides the source selection.
- *
- * @param string $message HTML message to be shown at top of form
- * @param string $sessionKey Session key of the stashed upload
- */
- protected function showUploadForm( $form ) {
- # Add links if file was previously deleted
- if ( !$this->mDesiredDestName )
- $this->showViewDeletedLinks();
-
- $form->show();
- }
-
- /**
- * Get an UploadForm instance with title and text properly set.
- *
- * @param string $message HTML string to add to the form
- * @param string $sessionKey Session key in case this is a stashed upload
- * @return UploadForm
- */
- protected function getUploadForm( $message = '', $sessionKey = '', $hideIgnoreWarning = false ) {
- # Initialize form
- $form = new SFUploadForm( array(
- 'watch' => $this->watchCheck(),
- 'forreupload' => $this->mForReUpload,
- 'sessionkey' => $sessionKey,
- 'hideignorewarning' => $hideIgnoreWarning,
- 'texttop' => $this->uploadFormTextTop,
- 'textaftersummary' => $this->uploadFormTextAfterSummary,
- 'destfile' => $this->mDesiredDestName,
- 'sfInputID' => $this->mInputID,
- 'sfDelimiter' => $this->mDelimiter,
- ) );
- $form->setTitle( $this->getTitle() );
-
- # Check the token, but only if necessary
- if ( !$this->mTokenOk && !$this->mCancelUpload
- && ( $this->mUpload && $this->mUploadClicked ) )
- $form->addPreText( wfMessage( 'session_fail_preview' )->parse() );
-
- # Add upload error message
- $form->addPreText( $message );
-
- # Add footer to form
- if ( !wfMessage( 'uploadfooter' )->isDisabled() ) {
- $uploadFooter = wfMessage( 'uploadfooter' )->plain();
- $form->addPostText( '<div id="mw-upload-footer-message">'
- . $this->getOutput()->parse( $uploadFooter ) . "</div>\n" );
- }
-
- return $form;
- }
-
- /**
- * Shows the "view X deleted revivions link""
- */
- protected function showViewDeletedLinks() {
- $title = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName );
- // Show a subtitle link to deleted revisions (to sysops et al only)
- if ( $title instanceof Title && ( $count = $title->isDeleted() ) > 0
- && $this->getUser()->isAllowed( 'deletedhistory' ) ) {
- $link = wfMessage( $this->getUser()->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted' )
- ->rawParams( $this->getSkin()->linkKnown(
- SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
- wfMessage( 'restorelink' )->numParams( $count )->escaped()
- )
- )->parse();
- $this->getOutput()->addHTML( "<div id=\"contentSub2\">{$link}</div>" );
- }
-
- // Show the relevant lines from deletion log (for still deleted files only)
- if ( $title instanceof Title && $title->isDeletedQuick() && !$title->exists() ) {
- $this->showDeletionLog( $this->getOutput(), $title->getPrefixedText() );
- }
- }
-
- /**
- * Stashes the upload and shows the main upload form.
- *
- * Note: only errors that can be handled by changing the name or
- * description should be redirected here. It should be assumed that the
- * file itself is sane and has passed UploadBase::verifyFile. This
- * essentially means that UploadBase::VERIFICATION_ERROR and
- * UploadBase::EMPTY_FILE should not be passed here.
- *
- * @param string $message HTML message to be passed to mainUploadForm
- */
- protected function recoverableUploadError( $message ) {
- $sessionKey = $this->mUpload->stashSession();
- $message = '<h2>' . wfMessage( 'uploadwarning' )->escaped() . "</h2>\n" .
- '<div class="error">' . $message . "</div>\n";
-
- $form = $this->getUploadForm( $message, $sessionKey );
- $form->setSubmitText( wfMessage( 'upload-tryagain' )->text() );
- $this->showUploadForm( $form );
- }
- /**
- * Stashes the upload, shows the main form, but adds an "continue anyway button"
- *
- * @param array $warnings
- */
- protected function uploadWarning( $warnings ) {
- $sessionKey = $this->mUpload->stashSession();
-
- $warningHtml = '<h2>' . wfMessage( 'uploadwarning' )->escaped() . "</h2>\n"
- . '<ul class="warning">';
- foreach ( $warnings as $warning => $args ) {
- if ( $warning == 'exists' ) {
- $msg = self::getExistsWarning( $args );
- } elseif ( $warning == 'duplicate' ) {
- $msg = self::getDupeWarning( $args );
- } elseif ( $warning == 'duplicate-archive' ) {
- $msg = "\t<li>" . wfMessage(
- 'file-deleted-duplicate',
- array( Title::makeTitle( NS_FILE, $args )->getPrefixedText() )
- )->parse() . "</li>\n";
- } else {
- if ( is_bool( $args ) )
- $args = array();
- elseif ( !is_array( $args ) ) {
- $args = array( $args );
- }
- $msg = "\t<li>" . wfMessage( $warning, $args )->parse() . "</li>\n";
- }
- $warningHtml .= $msg;
- }
- $warningHtml .= "</ul>\n";
- $warningHtml .= wfMessage( 'uploadwarning-text' )->parseAsBlock();
-
- $form = $this->getUploadForm( $warningHtml, $sessionKey, /* $hideIgnoreWarning */ true );
- $form->setSubmitText( wfMessage( 'upload-tryagain' )->text() );
- $form->addButton( 'wpUploadIgnoreWarning', wfMessage( 'ignorewarning' )->text() );
- $form->addButton( 'wpCancelUpload', wfMessage( 'reuploaddesc' )->text() );
-
- $this->showUploadForm( $form );
- }
-
- /**
- * Show the upload form with error message, but do not stash the file.
- *
- * @param string $message
- */
- protected function uploadError( $message ) {
- $message = '<h2>' . wfMessage( 'uploadwarning' )->escaped() . "</h2>\n" .
- '<div class="error">' . $message . "</div>\n";
- $this->showUploadForm( $this->getUploadForm( $message ) );
- }
-
- /**
- * Do the upload.
- * Checks are made in SpecialUpload::execute()
- */
- protected function processUpload() {
- // Verify permissions
- $permErrors = $this->mUpload->verifyPermissions( $this->getUser() );
- if ( $permErrors !== true )
- return $this->getOutput()->showPermissionsErrorPage( $permErrors );
-
- // Fetch the file if required
- $status = $this->mUpload->fetchFile();
- if ( !$status->isOK() )
- return $this->showUploadForm( $this->getUploadForm( $this->getOutput()->parse( $status->getWikiText() ) ) );
-
- if( !wfRunHooks( 'UploadForm:BeforeProcessing', array( &$this ) ) ) {
- wfDebug( "Hook 'UploadForm:BeforeProcessing' broke processing the file.\n" );
- // This code path is deprecated. If you want to break upload processing
- // do so by hooking into the appropriate hooks in UploadBase::verifyUpload
- // and UploadBase::verifyFile.
- // If you use this hook to break uploading, the user will be returned
- // an empty form with no error message whatsoever.
- return;
- }
-
- // Upload verification
- $details = $this->mUpload->verifyUpload();
- if ( $details['status'] != UploadBase::OK )
- return $this->processVerificationError( $details );
-
- $this->mLocalFile = $this->mUpload->getLocalFile();
-
- // Check warnings if necessary
- if ( !$this->mIgnoreWarning ) {
- $warnings = $this->mUpload->checkWarnings();
- if ( count( $warnings ) )
- return $this->uploadWarning( $warnings );
- }
-
- // Get the page text if this is not a reupload
- if ( !$this->mForReUpload ) {
- $pageText = self::getInitialPageText( $this->mComment, $this->mLicense,
- $this->mCopyrightStatus, $this->mCopyrightSource );
- } else {
- $pageText = false;
- }
- $status = $this->mUpload->performUpload( $this->mComment, $pageText, $this->mWatchthis, $this->getUser() );
- if ( !$status->isGood() )
- return $this->uploadError( $this->getOutput()->parse( $status->getWikiText() ) );
-
- // $this->getOutput()->redirect( $this->mLocalFile->getTitle()->getFullURL() );
- // Semantic Forms change - output Javascript to either
- // fill in or append to the field in original form, and
- // close the window
- # Chop off any directories in the given filename
- if ( $this->mDesiredDestName ) {
- $basename = $this->mDesiredDestName;
- } else {
- $basename = $this->mSrcName;
- }
-
- $basename = str_replace( '_', ' ', $basename );
- // UTF8-decoding is needed for IE.
- // Actually, this doesn't seem to fix the encoding in IE
- // any more... and it messes up the encoding for all other
- // browsers. @TODO - fix handling in IE!
- //$basename = utf8_decode( $basename );
-
- $output = <<<END
- <script type="text/javascript">
- var input = parent.window.jQuery( parent.document.getElementById("{$this->mInputID}") );
-END;
-
- if ( $this->mDelimiter == null ) {
- $output .= <<<END
- input.val( '$basename' );
- input.change();
-END;
- } else {
- $output .= <<<END
- // if the current value is blank, set it to this file name;
- // if it's not blank and ends in a space or delimiter, append
- // the file name; if it ends with a normal character, append
- // both a delimiter and a file name; and add on a delimiter
- // at the end in any case
- var cur_value = parent.document.getElementById("{$this->mInputID}").value;
-
- if (cur_value === '') {
- input.val( '$basename' + '{$this->mDelimiter} ' );
- input.change();
- } else {
- var last_char = cur_value.charAt(cur_value.length - 1);
- if (last_char == '{$this->mDelimiter}' || last_char == ' ') {
- parent.document.getElementById("{$this->mInputID}").value += '$basename' + '{$this->mDelimiter} ';
- input.change();
- } else {
- parent.document.getElementById("{$this->mInputID}").value += '{$this->mDelimiter} $basename{$this->mDelimiter} ';
- input.change();
- }
- }
-
-END;
- }
- $output .= <<<END
- parent.jQuery.fancybox.close();
- </script>
-
-END;
- // $this->getOutput()->addHTML( $output );
- print $output;
- $img = null; // @todo: added to avoid passing a ref to null - should this be defined somewhere?
-
- wfRunHooks( 'SpecialUploadComplete', array( &$this ) );
- }
-
- /**
- * Get the initial image page text based on a comment and optional file status information
- */
- public static function getInitialPageText( $comment = '', $license = '', $copyStatus = '', $source = '' ) {
- global $wgUseCopyrightUpload;
- if ( $wgUseCopyrightUpload ) {
- $licensetxt = '';
- if ( $license !== '' ) {
- $licensetxt = '== ' . wfMessage( 'license-header' )->inContentLanguage()->text() . " ==\n" . '{{' . $license . '}}' . "\n";
- }
- $pageText = '== ' . wfMessage ( 'filedesc' )->inContentLanguage()->text() . " ==\n" . $comment . "\n" .
- '== ' . wfMessage( 'filestatus' )->inContentLanguage()->text() . " ==\n" . $copyStatus . "\n" .
- "$licensetxt" .
- '== ' . wfMessage( 'filesource' )->inContentLanguage()->text() . " ==\n" . $source ;
- } else {
- if ( $license !== '' ) {
- $filedesc = $comment === '' ? '' : '== ' . wfMessage( 'filedesc' )->inContentLanguage()->text() . " ==\n" . $comment . "\n";
- $pageText = $filedesc .
- '== ' . wfMessage( 'license-header' )->inContentLanguage()->text() . " ==\n" . '{{' . $license . '}}' . "\n";
- } else {
- $pageText = $comment;
- }
- }
- return $pageText;
- }
-
- /**
- * See if we should check the 'watch this page' checkbox on the form
- * based on the user's preferences and whether we're being asked
- * to create a new file or update an existing one.
- *
- * In the case where 'watch edits' is off but 'watch creations' is on,
- * we'll leave the box unchecked.
- *
- * Note that the page target can be changed *on the form*, so our check
- * state can get out of sync.
- */
- protected function watchCheck() {
- if ( $this->getUser()->getOption( 'watchdefault' ) ) {
- // Watch all edits!
- return true;
- }
-
- $local = wfLocalFile( $this->mDesiredDestName );
- if ( $local && $local->exists() ) {
- // We're uploading a new version of an existing file.
- // No creation, so don't watch it if we're not already.
- return $local->getTitle()->userIsWatching();
- } else {
- // New page should get watched if that's our option.
- return $this->getUser()->getOption( 'watchcreations' );
- }
- }
-
-
- /**
- * Provides output to the user for a result of UploadBase::verifyUpload
- *
- * @param array $details Result of UploadBase::verifyUpload
- */
- protected function processVerificationError( $details ) {
- global $wgFileExtensions;
-
- switch( $details['status'] ) {
-
- /** Statuses that only require name changing **/
- case UploadBase::MIN_LENGTH_PARTNAME:
- $this->recoverableUploadError( wfMessage( 'minlength1' )->escaped() );
- break;
- case UploadBase::ILLEGAL_FILENAME:
- $this->recoverableUploadError( wfMessage( 'illegalfilename',
- $details['filtered'] )->parse() );
- break;
- case UploadBase::OVERWRITE_EXISTING_FILE:
- $this->recoverableUploadError( wfMessage( $details['overwrite'] )->parse() );
- break;
- case UploadBase::FILETYPE_MISSING:
- $this->recoverableUploadError( wfMessage( 'filetype-missing' )->parse() );
- break;
-
- /** Statuses that require reuploading **/
- case UploadBase::EMPTY_FILE:
- $this->showUploadForm( $this->getUploadForm( wfMessage( 'emptyfile' )->escaped() ) );
- break;
- case UploadBase::FILETYPE_BADTYPE:
- $finalExt = $details['finalExt'];
- $this->uploadError(
- wfMessage( 'filetype-banned-type',
- htmlspecialchars( $finalExt ), // @todo Double escaping?
- implode(
- wfMessage( 'comma-separator' )->text(),
- $wgFileExtensions
- )
- )->numParams( count( $wgFileExtensions ) )->parse()
- );
- break;
- case UploadBase::VERIFICATION_ERROR:
- unset( $details['status'] );
- $code = array_shift( $details['details'] );
- $this->uploadError( wfMessage( $code, $details['details'] )->parse() );
- break;
- case UploadBase::HOOK_ABORTED:
- $error = $details['error'];
- $this->uploadError( wfMessage( $error )->parse() );
- break;
- default:
- throw new MWException( __METHOD__ . ": Unknown value `{$details['status']}`" );
- }
- }
-
- /**
- * Remove a temporarily kept file stashed by saveTempUploadedFile().
- * @access private
- * @return success
- */
- protected function unsaveUploadedFile() {
- if ( !( $this->mUpload instanceof UploadFromStash ) )
- return true;
- $success = $this->mUpload->unsaveUploadedFile();
- if ( ! $success ) {
- $this->getOutput()->showFileDeleteError( $this->mUpload->getTempPath() );
- return false;
- } else {
- return true;
- }
- }
-
- /*** Functions for formatting warnings ***/
-
- /**
- * Formats a result of UploadBase::getExistsWarning as HTML
- * This check is static and can be done pre-upload via AJAX
- *
- * @param array $exists The result of UploadBase::getExistsWarning
- * @return string Empty string if there is no warning or an HTML fragment
- * consisting of one or more <li> elements if there is a warning.
- */
- public static function getExistsWarning( $exists ) {
- if ( !$exists )
- return '';
-
- $file = $exists['file'];
- $filename = $file->getTitle()->getPrefixedText();
- $warning = array();
-
- if ( $exists['warning'] == 'exists' ) {
- // Exact match
- $warning[] = '<li>' . wfMessage( 'fileexists', $filename )->parse() . '</li>';
- } elseif ( $exists['warning'] == 'page-exists' ) {
- // Page exists but file does not
- $warning[] = '<li>' . wfMessage( 'filepageexists', $filename )->parse() . '</li>';
- } elseif ( $exists['warning'] == 'exists-normalized' ) {
- $warning[] = '<li>' . wfMessage( 'fileexists-extension', $filename,
- $exists['normalizedFile']->getTitle()->getPrefixedText() )->parse() . '</li>';
- } elseif ( $exists['warning'] == 'thumb' ) {
- // Swapped argument order compared with other messages for backwards compatibility
- $warning[] = '<li>' . wfMessage( 'fileexists-thumbnail-yes',
- $exists['thumbFile']->getTitle()->getPrefixedText(), $filename )->parse() . '</li>';
- } elseif ( $exists['warning'] == 'thumb-name' ) {
- // Image w/o '180px-' does not exists, but we do not like these filenames
- $name = $file->getName();
- $badPart = substr( $name, 0, strpos( $name, '-' ) + 1 );
- $warning[] = '<li>' . wfMessage( 'file-thumbnail-no', $badPart )->parse() . '</li>';
- } elseif ( $exists['warning'] == 'bad-prefix' ) {
- $warning[] = '<li>' . wfMessage( 'filename-bad-prefix', $exists['prefix'] )->parse() . '</li>';
- } elseif ( $exists['warning'] == 'was-deleted' ) {
- # If the file existed before and was deleted, warn the user of this
- $ltitle = SpecialPage::getTitleFor( 'Log' );
- $llink = Linker::linkKnown(
- $ltitle,
- wfMessage( 'deletionlog' )->escaped(),
- array(),
- array(
- 'type' => 'delete',
- 'page' => $filename
- )
- );
- $warning[] = '<li>' . wfMessage( 'filewasdeleted' )->rawParams( $llink )->parse() . '</li>';
- }
-
- return implode( "\n", $warning );
- }
-
- /**
- * Get a list of warnings
- *
- * @param string local filename, e.g. 'file exists', 'non-descriptive filename'
- * @return array list of warning messages
- */
- public static function ajaxGetExistsWarning( $filename ) {
- $file = wfFindFile( $filename );
- if ( !$file ) {
- // Force local file so we have an object to do further checks against
- // if there isn't an exact match...
- $file = wfLocalFile( $filename );
- }
- $s = '&#160;';
- if ( $file ) {
- $exists = UploadBase::getExistsWarning( $file );
- $warning = self::getExistsWarning( $exists );
- if ( $warning !== '' ) {
- $s = "<ul>$warning</ul>";
- }
- }
- return $s;
- }
-
- /**
- * Render a preview of a given license for the AJAX preview on upload
- *
- * @param string $license
- * @return string
- */
- public static function ajaxGetLicensePreview( $license ) {
- global $wgParser, $wgUser;
- $text = '{{' . $license . '}}';
- $title = Title::makeTitle( NS_FILE, 'Sample.jpg' );
- $options = ParserOptions::newFromUser( $wgUser );
-
- // Expand subst: first, then live templates...
- $text = $wgParser->preSaveTransform( $text, $title, $wgUser, $options );
- $output = $wgParser->parse( $text, $title, $options );
-
- return $output->getText();
- }
-
- /**
- * Construct a warning and a gallery from an array of duplicate files.
- */
- public static function getDupeWarning( $dupes ) {
- if ( $dupes ) {
- global $wgOut;
- $msg = "<gallery>";
- foreach ( $dupes as $file ) {
- $title = $file->getTitle();
- $msg .= $title->getPrefixedText() .
- "|" . $title->getText() . "\n";
- }
- $msg .= "</gallery>";
- return "<li>" .
- wfMessage( "file-exists-duplicate" )->numParams( count( $dupes ) )->parseAsBlock() .
- $wgOut->parse( $msg ) .
- "</li>\n";
- } else {
- return '';
- }
- }
-
-}
-
-/**
- * Sub class of HTMLForm that provides the form section of SpecialUpload
- */
-class SFUploadForm extends HTMLForm {
- protected $mWatch;
- protected $mForReUpload;
- protected $mSessionKey;
- protected $mHideIgnoreWarning;
- protected $mDestWarningAck;
-
- protected $mSourceIds;
-
- public function __construct( $options = array() ) {
- $this->mWatch = !empty( $options['watch'] );
- $this->mForReUpload = !empty( $options['forreupload'] );
- $this->mSessionKey = isset( $options['sessionkey'] )
- ? $options['sessionkey'] : '';
- $this->mHideIgnoreWarning = !empty( $options['hideignorewarning'] );
- $this->mDestFile = isset( $options['destfile'] ) ? $options['destfile'] : '';
-
- $this->mTextTop = isset( $options['texttop'] ) ? $options['texttop'] : '';
- $this->mTextAfterSummary = isset( $options['textaftersummary'] ) ? $options['textaftersummary'] : '';
-
- $sourceDescriptor = $this->getSourceSection();
- $descriptor = $sourceDescriptor
- + $this->getDescriptionSection()
- + $this->getOptionsSection();
-
- wfRunHooks( 'UploadFormInitDescriptor', array( $descriptor ) );
- parent::__construct( $descriptor, 'upload' );
-
- # Set some form properties
- $this->setSubmitText( wfMessage( 'uploadbtn' )->text() );
- $this->setSubmitName( 'wpUpload' );
- $this->setSubmitTooltip( 'upload' );
- $this->setId( 'mw-upload-form' );
-
- # Build a list of IDs for javascript insertion
- $this->mSourceIds = array();
- foreach ( $sourceDescriptor as $key => $field ) {
- if ( !empty( $field['id'] ) )
- $this->mSourceIds[] = $field['id'];
- }
- // added for Semantic Forms
- $this->addHiddenField( 'sfInputID', $options['sfInputID'] );
- $this->addHiddenField( 'sfDelimiter', $options['sfDelimiter'] );
-
- }
-
- /**
- * Get the descriptor of the fieldset that contains the file source
- * selection. The section is 'source'
- *
- * @return array Descriptor array
- */
- protected function getSourceSection() {
- if ( $this->mSessionKey ) {
- return array(
- 'wpSessionKey' => array(
- 'type' => 'hidden',
- 'default' => $this->mSessionKey,
- ),
- 'wpSourceType' => array(
- 'type' => 'hidden',
- 'default' => 'Stash',
- ),
- );
- }
-
- $canUploadByUrl = UploadFromUrl::isEnabled() && $this->getUser()->isAllowed( 'upload_by_url' );
- $radio = $canUploadByUrl;
- $selectedSourceType = strtolower( $this->getRequest()->getText( 'wpSourceType', 'File' ) );
-
- $descriptor = array();
-
- if ( $this->mTextTop ) {
- $descriptor['UploadFormTextTop'] = array(
- 'type' => 'info',
- 'section' => 'source',
- 'default' => $this->mTextTop,
- 'raw' => true,
- );
- }
-
- $descriptor['UploadFile'] = array(
- 'class' => 'SFUploadSourceField',
- 'section' => 'source',
- 'type' => 'file',
- 'id' => 'wpUploadFile',
- 'label-message' => 'sourcefilename',
- 'upload-type' => 'File',
- 'radio' => &$radio,
- 'help' => wfMessage( 'upload-maxfilesize',
- $this->getLanguage()->formatSize(
- wfShorthandToInteger( ini_get( 'upload_max_filesize' ) )
- )
- )->parse() . ' ' . wfMessage( 'upload_source_file' )->escaped(),
- 'checked' => $selectedSourceType == 'file',
- );
- if ( $canUploadByUrl ) {
- global $wgMaxUploadSize;
- $descriptor['UploadFileURL'] = array(
- 'class' => 'SFUploadSourceField',
- 'section' => 'source',
- 'id' => 'wpUploadFileURL',
- 'label-message' => 'sourceurl',
- 'upload-type' => 'Url',
- 'radio' => &$radio,
- 'help' => wfMessage( 'upload-maxfilesize',
- $this->getLanguage()->formatSize( $wgMaxUploadSize )
- )->parse() . ' ' . wfMessage( 'upload_source_url' )->escaped(),
- 'checked' => $selectedSourceType == 'url',
- );
- }
- wfRunHooks( 'UploadFormSourceDescriptors', array( &$descriptor, &$radio, $selectedSourceType ) );
-
- $descriptor['Extensions'] = array(
- 'type' => 'info',
- 'section' => 'source',
- 'default' => $this->getExtensionsMessage(),
- 'raw' => true,
- );
- return $descriptor;
- }
-
-
- /**
- * Get the messages indicating which extensions are preferred and prohibitted.
- *
- * @return string HTML string containing the message
- */
- protected function getExtensionsMessage() {
- # Print a list of allowed file extensions, if so configured. We ignore
- # MIME type here, it's incomprehensible to most people and too long.
- global $wgCheckFileExtensions, $wgStrictFileExtensions,
- $wgFileExtensions, $wgFileBlacklist;
-
- if ( $wgCheckFileExtensions ) {
- if ( $wgStrictFileExtensions ) {
- # Everything not permitted is banned
- $extensionsList =
- '<div id="mw-upload-permitted">' .
- wfMessage( 'upload-permitted', $this->getLanguage()->commaList( $wgFileExtensions ) )->parse() .
- "</div>\n";
- } else {
- # We have to list both preferred and prohibited
- $extensionsList =
- '<div id="mw-upload-preferred">' .
- wfMessage( 'upload-preferred', $this->getLanguage()->commaList( $wgFileExtensions ) )->parse() .
- "</div>\n" .
- '<div id="mw-upload-prohibited">' .
- wfMessage( 'upload-prohibited', $this->getLanguage()->commaList( $wgFileBlacklist ) )->parse() .
- "</div>\n";
- }
- } else {
- # Everything is permitted.
- $extensionsList = '';
- }
- return $extensionsList;
- }
-
- /**
- * Get the descriptor of the fieldset that contains the file description
- * input. The section is 'description'
- *
- * @return array Descriptor array
- */
- protected function getDescriptionSection() {
- $cols = intval( $this->getUser()->getOption( 'cols' ) );
- if ( $this->getUser()->getOption( 'editwidth' ) ) {
- $this->getOutput()->addInlineStyle( '#mw-htmlform-description { width: 100%; }' );
- }
-
- $descriptor = array(
- 'DestFile' => array(
- 'type' => 'text',
- 'section' => 'description',
- 'id' => 'wpDestFile',
- 'label-message' => 'destfilename',
- 'size' => 60,
- ),
- 'UploadDescription' => array(
- 'type' => 'textarea',
- 'section' => 'description',
- 'id' => 'wpUploadDescription',
- 'label-message' => $this->mForReUpload
- ? 'filereuploadsummary'
- : 'fileuploadsummary',
- 'cols' => $cols,
- 'rows' => 4,
- ),
-/*
- 'EditTools' => array(
- 'type' => 'edittools',
- 'section' => 'description',
- ),
-*/
- 'License' => array(
- 'type' => 'select',
- 'class' => 'Licenses',
- 'section' => 'description',
- 'id' => 'wpLicense',
- 'label-message' => 'license',
- ),
- );
-
- if ( $this->mTextAfterSummary ) {
- $descriptor['UploadFormTextAfterSummary'] = array(
- 'type' => 'info',
- 'section' => 'description',
- 'default' => $this->mTextAfterSummary,
- 'raw' => true,
- );
- }
-
- if ( $this->mForReUpload )
- $descriptor['DestFile']['readonly'] = true;
-
- global $wgUseCopyrightUpload;
- if ( $wgUseCopyrightUpload ) {
- $descriptor['UploadCopyStatus'] = array(
- 'type' => 'text',
- 'section' => 'description',
- 'id' => 'wpUploadCopyStatus',
- 'label-message' => 'filestatus',
- );
- $descriptor['UploadSource'] = array(
- 'type' => 'text',
- 'section' => 'description',
- 'id' => 'wpUploadSource',
- 'label-message' => 'filesource',
- );
- }
-
- return $descriptor;
- }
-
- /**
- * Get the descriptor of the fieldset that contains the upload options,
- * such as "watch this file". The section is 'options'
- *
- * @return array Descriptor array
- */
- protected function getOptionsSection() {
- $descriptor = array(
- 'Watchthis' => array(
- 'type' => 'check',
- 'id' => 'wpWatchthis',
- 'label-message' => 'watchthisupload',
- 'section' => 'options',
- )
- );
- if ( !$this->mHideIgnoreWarning ) {
- $descriptor['IgnoreWarning'] = array(
- 'type' => 'check',
- 'id' => 'wpIgnoreWarning',
- 'label-message' => 'ignorewarnings',
- 'section' => 'options',
- );
- }
- $descriptor['DestFileWarningAck'] = array(
- 'type' => 'hidden',
- 'id' => 'wpDestFileWarningAck',
- 'default' => $this->mDestWarningAck ? '1' : '',
- );
-
-
- return $descriptor;
-
- }
-
- /**
- * Add the upload JS and show the form.
- */
- public function show() {
- $this->addUploadJS();
- parent::show();
- // disable output - we'll print out the page manually,
- // taking the body created by the form, plus the necessary
- // Javascript files, and turning them into an HTML page
- global $wgTitle, $wgLanguageCode,
- $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgContLang;
-
- $this->getOutput()->disable();
- $wgTitle = SpecialPage::getTitleFor( 'Upload' );
-
- $this->getOutput()->addModules( array( 'mediawiki.action.edit', 'mediawiki.legacy.upload', 'mediawiki.legacy.wikibits', 'mediawiki.legacy.ajax' ) );
-
- $text = <<<END
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="{$wgXhtmlDefaultNamespace}"
-END;
- foreach ( $wgXhtmlNamespaces as $tag => $ns ) {
- $text .= "xmlns:{$tag}=\"{$ns}\" ";
- }
- $dir = $wgContLang->isRTL() ? "rtl" : "ltr";
- $text .= "xml:lang=\"{$wgLanguageCode}\" lang=\"{$wgLanguageCode}\" dir=\"{$dir}\">";
-
- $text .= <<<END
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<head>
-{$this->getOutput()->getHeadScripts()}
-</head>
-<body>
-{$this->getOutput()->getHTML()}
-{$this->getOutput()->getBottomScripts()}
-</body>
-</html>
-
-
-END;
- print $text;
- }
-
- /**
- * Add upload JS to OutputPage
- *
- * @param bool $autofill Whether or not to autofill the destination
- * filename text box
- */
- protected function addUploadJS( $autofill = true ) {
- global $wgUseAjax, $wgAjaxUploadDestCheck, $wgAjaxLicensePreview;
- global $wgStrictFileExtensions;
-
- $scriptVars = array(
- 'wgAjaxUploadDestCheck' => $wgUseAjax && $wgAjaxUploadDestCheck,
- 'wgAjaxLicensePreview' => $wgUseAjax && $wgAjaxLicensePreview,
- 'wgUploadAutoFill' => (bool)$autofill &&
- // If we received mDestFile from the request, don't autofill
- // the wpDestFile textbox
- $this->mDestFile === '',
- 'wgUploadSourceIds' => $this->mSourceIds,
- 'wgStrictFileExtensions' => $wgStrictFileExtensions,
- 'wgCapitalizeUploads' => MWNamespace::isCapitalized( NS_FILE ),
- );
-
- $this->getOutput()->addScript( Skin::makeVariablesScript( $scriptVars ) );
- }
-
- /**
- * Empty function; submission is handled elsewhere.
- *
- * @return bool false
- */
- function trySubmit() {
- return false;
- }
-
-}
-
-/**
- * A form field that contains a radio box in the label.
- */
-class SFUploadSourceField extends HTMLTextField {
-
- function getLabelHtml( $cellAttributes = array() ) {
- $id = "wpSourceType{$this->mParams['upload-type']}";
- $label = Html::rawElement( 'label', array( 'for' => $id ), $this->mLabel );
-
- if ( !empty( $this->mParams['radio'] ) ) {
- $attribs = array(
- 'name' => 'wpSourceType',
- 'type' => 'radio',
- 'id' => $id,
- 'value' => $this->mParams['upload-type'],
- );
-
- if ( !empty( $this->mParams['checked'] ) )
- $attribs['checked'] = 'checked';
- $label .= Html::element( 'input', $attribs );
- }
-
- return Html::rawElement( 'td', array( 'class' => 'mw-label' ), $label );
- }
-
- function getSize() {
- return isset( $this->mParams['size'] )
- ? $this->mParams['size']
- : 60;
- }
-
- /**
- * This page can be shown if uploading is enabled.
- * Handle permission checking elsewhere in order to be able to show
- * custom error messages.
- *
- * @param User $user
- * @return bool
- */
- public function userCanExecute( User $user ) {
- return UploadBase::isEnabled() && parent::userCanExecute( $user );
- }
-
-}
diff --git a/SemanticForms/tests/bootstrap.php b/SemanticForms/tests/bootstrap.php
deleted file mode 100644
index fcfc55e8..00000000
--- a/SemanticForms/tests/bootstrap.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-if ( php_sapi_name() !== 'cli' ) {
- die( 'Not an entry point' );
-}
-
-if ( !defined( 'MEDIAWIKI' ) ) {
- die( 'MediaWiki is not available for the test environment' );
-}
-
-function registerAutoloaderPath( $identifier, $path ) {
- print( "\nUsing the {$identifier} vendor autoloader ...\n\n" );
- return require $path;
-}
-
-function runTestAutoLoader() {
-
- $mwVendorPath = __DIR__ . '/../../../vendor/autoload.php';
- $localVendorPath = __DIR__ . '/../vendor/autoload.php';
-
- if ( is_readable( $localVendorPath ) ) {
- $autoLoader = registerAutoloaderPath( 'local', $localVendorPath );
- } elseif ( is_readable( $mwVendorPath ) ) {
- $autoLoader = registerAutoloaderPath( 'MediaWiki', $mwVendorPath );
- } else {
- print( "\No vendor autoloader ...\n\n" );
- }
-
- if ( !$autoLoader instanceof \Composer\Autoload\ClassLoader ) {
- // For now return true as long as SF is not compatible with Composer
- // of course if it is installed via
- // https://packagist.org/packages/mediawiki/semantic-forms
- // we have no problems
- return true;
- }
-
- return true;
-}
-
-if ( !runTestAutoLoader() ) {
- die( 'The required test autoloader was not accessible' );
-}
diff --git a/SemanticForms/tests/mw-phpunit-runner.php b/SemanticForms/tests/mw-phpunit-runner.php
deleted file mode 100644
index c3928c64..00000000
--- a/SemanticForms/tests/mw-phpunit-runner.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/**
- * Lazy script to invoke the MediaWiki phpunit runner
- *
- * php mw-phpunit-runner.php [options]
- */
-
-if ( php_sapi_name() !== 'cli' ) {
- die( 'Not an entry point' );
-}
-
-print( "\nMediaWiki phpunit runnner ... \n" );
-
-function isReadablePath( $path ) {
-
- if ( is_readable( $path ) ) {
- return $path;
- }
-
- throw new RuntimeException( "Expected an accessible {$path} path" );
-}
-
-function addArguments( $args ) {
-
- $arguments = array();
-
- for ( $arg = reset( $args ); $arg !== false; $arg = next( $args ) ) {
-
- if ( $arg === basename( __FILE__ ) ) {
- continue;
- }
-
- $arguments[] = $arg;
- }
-
- return $arguments;
-}
-
-$mw = isReadablePath( __DIR__ . "/../../../tests/phpunit/phpunit.php" );
-$config = isReadablePath( __DIR__ . "/../phpunit.xml.dist" );
-
-passthru( "php {$mw} -c {$config} " . implode( ' ', addArguments( $GLOBALS['argv'] ) ) );
diff --git a/SemanticForms/tests/phpunit/includes/SF_FormPrinterTest.php b/SemanticForms/tests/phpunit/includes/SF_FormPrinterTest.php
deleted file mode 100644
index 91a10e0f..00000000
--- a/SemanticForms/tests/phpunit/includes/SF_FormPrinterTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-/**
- * Tests for the SFFormPrinter class
- *
- * @author Himeshi De Silva
- */
-class SFFormPrinterTest extends MediaWikiTestCase {
-
- // Tests for page sections in the formHTML() method
-
- /**
- * @dataProvider pageSectionDataProvider
- */
- public function testPageSectionsWithoutExistingPages( $setup, $expected ) {
-
- global $sfgFormPrinter, $wgTitle, $wgParser, $wgOut;
-
- $wgParser = $this->getParser();
- $wgTitle = $this->getTitle();
- $wgOut->getContext()->setTitle( $wgTitle );
-
- list ( $form_text, $javascript_text, $data_text, $form_page_title, $generated_page_name ) =
- $sfgFormPrinter->formHTML( $setup['form_definition'], null, false, null, null, 'TestStringForFormPageTitle', null );
-
- $this->assertContains(
- $expected['expected_form_text'],
- $form_text,
- 'asserts that formHTML() returns the correct HTML text for the form for the given test input'
- );
- $this->assertContains(
- $expected['expected_data_text'],
- $data_text,
- 'assert that formHTML() returns the correct text for the page created by the form'
- );
-
- }
-
- /**
- * Data provider method
- */
- public function pageSectionDataProvider() {
-
- $provider = array();
-
- // #1 form definition without other parameters
- $provider[] = array(
- array(
- 'form_definition' => "==section1==
- {{{section|section1|level=2}}}" ),
- array(
- 'expected_form_text' => "<span class=\"inputSpan\"><textarea tabindex=\"1\" name=\"_section[section1]\" id=\"input_1\" class=\"createboxInput\" rows=\"5\" cols=\"90\" style=\"width: 100%\"></textarea></span>",
- 'expected_data_text' => "==section1==" )
- );
-
- // #2 'rows' and 'colums' parameters set
- $provider[] = array(
- array(
- 'form_definition' => "=====section 2=====
- {{{section|section 2|level=5|rows=10|cols=5}}}" ),
- array(
- 'expected_form_text' => "<span class=\"inputSpan\"><textarea tabindex=\"1\" name=\"_section[section 2]\" id=\"input_1\" class=\"createboxInput\" rows=\"10\" cols=\"5\" style=\"width: auto\"></textarea></span>",
- 'expected_data_text' => "=====section 2=====" )
- );
-
- // #3 'mandatory' and 'autogrow' parameters set
- $provider[] = array(
- array(
- 'form_definition' => "==section 3==
- {{{section|section 3|level=2|mandatory|rows=20|cols=50|autogrow}}}" ),
- array(
- 'expected_form_text' => "<span class=\"inputSpan mandatoryFieldSpan\"><textarea tabindex=\"1\" name=\"_section[section 3]\" id=\"input_1\" class=\"mandatoryField autoGrow\" rows=\"20\" cols=\"50\" style=\"width: auto\"></textarea></span>",
- 'expected_data_text' => "==section 3==" )
- );
-
- // #4 'restricted' parameter set
- $provider[] = array(
- array(
- 'form_definition' => "===Section 5===
- {{{section|Section 5|level=3|restricted|class=FormTest}}}" ),
- array(
- 'expected_form_text' => "<span class=\"inputSpan\"><textarea tabindex=\"1\" name=\"_section[Section 5]\" id=\"input_1\" class=\"createboxInput FormTest\" rows=\"5\" cols=\"90\" style=\"width: 100%\" disabled=\"\"></textarea></span>",
- 'expected_data_text' => "===Section 5===" )
- );
-
- // #5 'hidden' parameter set
- $provider[] = array(
- array(
- 'form_definition' => "====section 4====
- {{{section|section 4|level=4|hidden}}}" ),
- array(
- 'expected_form_text' => "<input type=\"hidden\" name=\"_section[section 4]\" />",
- 'expected_data_text' => "====section 4====" )
- );
-
- return $provider;
- }
-
- /**
- * Returns a mock Title for test
- * @return Title
- */
- private function getTitle() {
-
- $mockTitle = $this->getMockBuilder( 'Title' )
- ->disableOriginalConstructor()
- ->getMock();
-
- $mockTitle->expects( $this->any() )
- ->method( 'getDBkey' )
- ->will( $this->returnValue( 'Sometitle' ) );
-
- $mockTitle->expects( $this->any() )
- ->method( 'getNamespace' )
- ->will( $this->returnValue( SF_NS_FORM ) );
-
- return $mockTitle;
- }
-
- /**
- * Returns a Parser for test
- * @return Parser
- */
- private function getParser() {
-
- return new StubObject(
- 'wgParser', $GLOBALS['wgParserConf']['class'],
- array( $GLOBALS['wgParserConf'] ) );
- }
-
-}
-